从新闻文章中提取评论

时间:2013-09-25 06:08:38

标签: python comments web-scraping beautifulsoup

我的问题类似于这里提出的问题: https://stackoverflow.com/questions/14599485/news-website-comment-analysis 我试图从任何新闻文章中提取评论。例如。我有一个新闻网址: http://www.cnn.com/2013/09/24/politics/un-obama-foreign-policy/ 我试图在python中使用BeautifulSoup来提取注释。但是,评论部分似乎嵌入在iframe中或通过javascript加载。通过firebug查看源代码并未显示注释部分的来源。但是通过浏览器的查看源功能明确查看注释的来源。如何提取评论,特别是当评论来自新闻网页中嵌入的不同网址时?

这是我迄今为止所做的,虽然这并不多:

    import urllib2
    from bs4 import BeautifulSoup

    opener = urllib2.build_opener()


    url = ('http://www.cnn.com/2013/08/28/health/stem-cell-brain/index.html')


urlContent = opener.open(url).read()
soup = BeautifulSoup(urlContent)
title = soup.title.text

print title
body = soup.findAll('body')
outfile = open("brain.txt","w+")
for i in body:
    i=i.text.encode('ascii','ignore')
    outfile.write(i +'\n')

我非常感谢您对我需要做什么或如何去做的任何帮助。

1 个答案:

答案 0 :(得分:0)

iframe内。检查id="dsq2"的框架。

现在iframe有一个src attr,它是指向actual site的评论的链接。

所以在漂亮的汤中:css_soup.select("#dsq2")并从src属性中获取url。它会引导您进入只有评论的页面。

获取实际评论,从src获取页面后,您可以使用此css选择器:.post-message p

如果你想加载更多评论,当你点击更多评论按钮时,它似乎是发送这个:

http://disqus.com/api/3.0/threads/listPostsThreaded?limit=50&thread=1660715220&forum=cnn&order=popular&cursor=2%3A0%3A0&api_key=E8Uh5l5fHZ6gD8U3KycjAIAk46f68Zw7C6eW8WSjZvCLXebZ7p0r1yrYDrLilk2F