【问题标题】:How to scrape a XML website using bs4?如何使用 bs4 抓取 XML 网站?
【发布时间】:2012-08-05 18:42:16
【问题描述】:

我正在解析销售电子产品的网站.. 具体来说,我希望收集产品的名称和价格 我在解析基于 xml 的网站时遇到了一个小问题......

这是我的代码:

>>> import urllib2  
>>> from bs4 import BeautifulSoup  
>>> url=urllib2.urlopen("http://store.explorelabs.com/index.php?main_page=products_all")  
>>> soup=BeautifulSoup(url,"xml")  
>>> data=soup.find_all(colspan="2")  

上面的代码有效
现在当我这样做时(因为名称在强标签内)

>>> data.strong  

>>> data.attrs  

它告诉我这个:

Traceback (most recent call last):  
  File "<pyshell#10>", line 1, in <module>  
    data.strong  
AttributeError: 'ResultSet' object has no attribute 'strong'  

Traceback (most recent call last):  
  File "<pyshell#17>", line 1, in <module>  
    data.find_all('a')  
AttributeError: 'ResultSet' object has no attribute 'find_all'  

我正在尝试迭代并尝试了解更多信息。
任何指针都会非常有帮助。

【问题讨论】:

  • 欢迎来到 Stack Overflow!我已经为你格式化了你的代码块;下次查看How do I format my code blocks? 寻求帮助。
  • 另外请注意,在 Stack Overflow 上,我们都可以通过编辑来帮助改进您的帖子。如果你回滚这些编辑,你就会撤消那些试图帮助你的人的工作。
  • @MartijnPieters 我很抱歉,感谢您的友好:)

标签: python xml web-scraping beautifulsoup


【解决方案1】:

find_all 返回匹配的元素列表,而不是一个。遍历结果集以获取单个项目:

for element in data:
    element.attrs

【讨论】:

  • 嘿,你能帮我如何收集产品的价格吗? (有时在某些产品列表中也有制造商名称,有时没有,产品信息由 br 标签分隔)
  • 研究 BeautifulSoup 文档,多玩一下这个库,我相信你会明白的。如果遇到具体问题,请在 Stack Overflow 上搜索(这里有很多 BeautifulSoup 答案),如果找不到问题的答案,请提出新问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-16
  • 2018-11-20
相关资源
最近更新 更多