使用disqus从网站检索评论



我想写一个抓取脚本来从cnn文章中检索评论。例如,本文:http://www.cnn.com/2012/01/19/politics/gop-debate/index.html?hpt=hp_t1

我知道cnn在评论讨论中使用disqus。由于评论加载不是基于网页的(即上一页、下一页),而且是动态的(即需要点击"加载下一页25"),我不知道如何检索本文的所有5000多条评论。

有什么想法或建议吗?

非常感谢!

我需要通过抓取一个通过ajax丢弃评论的页面来获得评论。因为它们没有在服务器上呈现,所以我不得不调用disqus-api。在源代码中,您将需要标识符代码:

var identifier = "456643" // take note of this from the page source
// this is the ident url query param in the following js request

此外,在js源代码中查找页面公钥和论坛名称。将这些放在适当的url中。

我使用javascript nodejs来测试这一点,即:

var request = require("request");
var publicKey  = "pILMw27bsbJsdfsdQDh9Eh0MzAgFL6xx0hYdsdsdfaIfBHRvLGqFFQ09st";
var disqusUri = "https://disqus.com/api/3.0/threads/listPosts.json?&api_key=" + publicKey + "&thread:ident=456643&forum=nameOfForumFromSource";
request(disqusUri, function(res,status,err){
    console.log(res.body);
    if(err){
        console.log("ERR: " + err);
    }
});

抓取(除了获取页面)的选项可能不太健壮(取决于您的需求),但会为您的问题提供解决方案,它是在成熟的web浏览器周围使用某种包装器,并对使用模式进行编码并提取相关数据。既然你没有提到你知道哪种编程语言,我就举3个例子:1)Watir-ruby,2)Watin-IE&Firefox通过.net,3)Selenium-IE通过C#/Java/Perl/PHP/Ruby/Python

我将提供一个使用Watin&C#:

IE browser = new IE();
browser.GoTo(YOUR CNN URL);
List visibleComments = Browser.List(Find.ById("dsq-comments"));
//do your scraping thing
Link moreComments = Browser.Link(Find.ByClass("dsq-paginate-append-text");
moreComments.click();
//wait util ajax ended by searching for some indicator
Browser.WaitUntilContainsText(SOME TEXT);
//do your scraping thing

注意:我不熟悉disqus,但通过循环链接&单击我发布的部分代码,直到所有注释都可见,然后刮取List元素dsq注释