如何使用Python从新闻文章下载所有评论?

时间:2017-11-20 23:24:30

标签: python beautifulsoup

我必须承认我不太了解html。我试图使用python从在线新闻中的文章中提取所有评论。我尝试使用python BeautifulSoup,但似乎注释不在html源代码中,而是出现在inspect-element中。例如,你可以在这里查看。 http://www.dailymail.co.uk/sciencetech/article-5100519/Elon-Musk-says-Tesla-Roadster-special-option.html#comments

我的代码在这里,我很震惊。

        import urllib.request as urllib2
        from bs4 import BeautifulSoup
        url = "http://www.dailymail.co.uk/sciencetech/article-5100519/Elon-Musk-says-Tesla-Roadster-special-option.html#comments"
        page = urllib2.urlopen(url)
        soup = BeautifulSoup(page, "html.parser")

我想这样做

    name_box = soup.find('p', attrs={'class': 'comment-body comment-text'})

但源代码中没有此信息。

有任何建议,如何前进?

2 个答案:

答案 0 :(得分:1)

我没有尝试过这样的事情,但我的猜测是,如果你想直接从"页面来源"因为页面是动态的,所以你需要像selenium这样的东西来实际导航页面。

或者,如果您只对评论感兴趣,可以使用dailymail.co.uk的api获取评论。

请注意查询字符串中的项目" max = 1000" "&安培;顺序"您可能还需要使用变量" offset"如果API对最大值有限制,则沿最大值查找所有注释" max"值。

我不知道API的定义位置,您可以通过查看浏览器在搜索网页时发出的网络请求来查看它。

您可以以JSON格式从http://www.dailymail.co.uk/reader-comments/p/asset/readcomments/5100519?max=1000&order=desc&rcCache=shout获取该页面的评论数据。似乎每篇文章都有类似" 5101863"在其网址中,您可以使用这些数字替换您想要评论的每个新故事。

答案 1 :(得分:0)

谢谢弗雷德曼。我不知道这个API。似乎我们只需要提供文章ID,我们可以从文章中得到评论。这是我正在寻找的解决方案。