我正在使用以下代码:
import urllib
from BeautifulSoup import BeautifulSoup
import re
comment_url = http://community.nytimes.com/comments/www.nytimes.com/2011/08/24/world/africa/24libya.html
response_new = urllib.urlopen(comment_url)
html_new = response.read()
soup_new = BeautifulSoup(html_new)
tags = soup_new.findAll('h3', {'class': 'share'})
for tag in tags:
a = tag.renderContents()
print a
print "done!"
我试图通过使用BeautifulSoup解析器在某些标签内查找信息来获取读者对某篇纽约时报文章的评论数量。在标准的NYTimes文章社区页面上,信息的位置如下:
<p>Share your thoughts.</p>
</div>
<div id="commentsWell">
<div id="readerComments">
<div class="header clearfix">
<h3 class="share">185
Readers' Comments</h3>
然而,当我运行代码时,我只是得到“完成!”这个词。很明显,我的代码没有拿起我指定的任何标签。我的问题是 - 我是否正确使用BeautifulSoup?如果是这样,你会如何建议我修改我的代码以获得所需的信息?
由于 斯纳
答案 0 :(得分:1)
明确使用attrs
关键字参数:
tags = soup_new.findAll('h3', attrs={'class': 'share'})
findAll
的来电签名是:
soup_new.findAll(self, name=None, attrs={}, recursive=True, text=None, limit=None, **kwargs)
因此,当您省略attrs=
时,您将第二个参数{'class': 'share'}
分配给name
而不是attrs
。