【问题标题】:TypeError: argument 1 must be convertible to a buffer, not BeautifulSoupTypeError:参数 1 必须可转换为缓冲区,而不是 BeautifulSoup
【发布时间】:2017-02-06 00:34:24
【问题描述】:
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。请帮助并提前感谢

【问题讨论】:

  • 查看链接后,我只能假设您正在尝试抓取产品信息。如果这是您想要的,那么您在 sn-p 中所做的事情没有意义,因为您只是将整个页面保存为字符串(这太错误了!)。请参阅bs4docs 了解有关如何使用标识符查找某些元素的详细信息。
  • @r3ign 先生,如果我无法解释清楚,我深表歉意。先生,我试图从网站上抓取 url,但如果我没有将它们转换为字符串,则将它们保存在 csv 文件中,它显示格式错误。但我肯定会按照您的建议参考 bs4docs。谢谢
  • 如果您需要完整的视频教程,请关注this video 从头开始​​学习。
  • @r3ign 谢谢你,先生会看到这些教程,如果你能建议,请提供有关 django 的教程链接。
  • 与最后一条评论中的视频相同的频道有一个名为“Try Django 1.9”的 django 播放列表

标签: python csv web-scraping


【解决方案1】:

我不知道是否有人能够解决它,但我的打击和尝试奏效了。问题是我没有将内容转换为字符串。

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

希望这会有所帮助

【讨论】:

    【解决方案2】:

    你试图做的事情没有任何意义。

    Beautiful Soup Documentation 所述:

    Beautiful Soup 是一个 Python 库,用于从 HTML 和 XML 文件中提取数据。它与您最喜欢的解析器一起使用,提供导航、搜索和修改解析树的惯用方式。它通常可以为程序员节省数小时或数天的工作时间。

    您似乎没有提取任何数据,但您试图将 BeautifulSoup 对象写入一个没有意义的文件。

    >>> type(data)
    <class 'bs4.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 文件的列中,但我会将这项工作留到你。您必须使用 BeautifulSouphtml 中查找每个产品,然后检索其所有详细信息并打印到 csv

    【讨论】:

      猜你喜欢
      • 2016-09-12
      • 1970-01-01
      • 2018-08-23
      • 1970-01-01
      • 2019-09-10
      • 1970-01-01
      • 1970-01-01
      • 2015-02-28
      • 2019-02-17
      相关资源
      最近更新 更多