2016-09-28 78 views
-1
from bs4 import BeautifulSoup 
import requests 
import csv 


page=requests.get("http://www.gigantti.fi/catalog/tietokoneet/fi_kannettavat/kannettavat-tietokoneet") 

data=BeautifulSoup(page.content) 

h=open("test.csv","wb+") 
h.write(data) 
h.close() 

print (data) 

我已经尝试运行的代码,因为它是没有csv文件打印出来,并将其完美地运行,但现在我尝试将它保存为CSV我得到错误:参数1必须可以转换为缓冲区,而不是BeautifulSoup。请帮助,并提前致谢类型错误:参数1必须转换到一个缓冲,而不是BeautifulSoup

+0

查看链接后,我只能假设您试图刮取产品信息。如果这就是你想要的,那么你在你的代码片段中所做的没有意义,因为你只是将整个页面保存为一个字符串(这太错误了!)。有关如何使用标识符查找某些元素的详细信息,请参阅[bs4docs](https://www.crummy.com/software/BeautifulSoup/bs4/doc/)。 – r3ign

+0

@ r3ign先生我的道歉,如果我无法解释清楚。 Sir Im试图从网站上刮掉这些网址,但是如果我没有将它们转换成字符串,它们会将它们保存在csv文件中,它会显示格式错误。但是我肯定会按照你的建议引用bs4docs。谢谢 –

+0

如果您需要完整的视频教程,请按照[此视频](https://www.youtube.com/watch?v=3xQTJi2tqgk)从头开始学习。 – r3ign

回答

1

你正在尝试做没有任何意义。作为Beautiful Soup Documentation提到

Beautiful Soup is a Python library for pulling data out of HTML and XML files. It works with your favorite parser to provide idiomatic ways of navigating, searching, and modifying the parse tree. It commonly saves programmers hours or days of work.

你似乎并不被拉动的任何数据,但你试图写一个BeautifulSoup对象到文件,该文件是没有意义的。

​​

什么,你应该使用BeautifulSoup的是搜索数据的一些信息,然后利用这些信息,下面是一个无用的例子:

from bs4 import BeautifulSoup 
import requests 
page = requests.get("http://www.gigantti.fi/catalog/tietokoneet/fi_kannettavat/kannettavat-tietokoneet") 

data = BeautifulSoup(page.content) 
with open("test.txt", "wb+") as f: 
    # find the first `<title>` tag and retrieve its value 
    value = data.findAll('title')[0].text 
    f.write(value) 

好像你应该使用BeautifulSoup到如果我正确猜测,请将产品列表中每个产品的所有信息都收回并放入csv文件的列中,但我将把这些工作留给您。您必须使用BeautifulSoup找到html中的每个产品,然后检索其所有详细信息并打印到csv

2

我不知道是否有人能够解决它,但我的命中和审判工作。问题是我没有将内容转换为字符串。

#what i needed to add was: 
#after line data=BeautifulSoup(page.content) 
a=str(data) 

希望这有助于

相关问题