使用Python BeautifulSoup获取在线新闻文章的评论数量

时间:2011-08-24 07:14:46

标签: python screen-scraping web-scraping

我正在使用以下代码:

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?如果是这样,你会如何建议我修改我的代码以获得所需的信息?

由于 斯纳

1 个答案:

答案 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