【问题标题】:Get yahoo comments with web scraping通过网络抓取获取雅虎评论
【发布时间】:2018-02-02 01:42:58
【问题描述】:

我正在尝试在 yahoo 上获取新闻 cmets,其中有一个链接“查看反应”,具有以下 id:“caascommtbar-wide”并尝试使用 CasperJS、Selenium、ScrapySharp 获取元素以单击在链接上并显示 cmets,但在那些工具中你永远找不到元素,我什至尝试使用 XPath

CasperJS:

       casper.then (function () {
            if (this.exists ('a.caascommtbar-anchor')) {
                  this.echo ("It exists");
            } else
                 this.echo ("It Does not Exist");
       });

       casper.then (function () {
       // Click on 1st result link
            this.click ('a.caascommtbar-anchor');
      });

硒:

driver.FindElement (By.Id ("caascommtbar-anchor")). Click ();

有谁知道为什么不能访问cmets所在的这部分HTML代码吗?

应该注意的是,当我尝试访问包含在新闻论坛中的 Facebook cmets 时,也会发生同样的事情。

【问题讨论】:

标签: javascript selenium web-scraping phantomjs casperjs


【解决方案1】:

正如 Isaac 所说,部分页面是异步加载的,因此您应该在代码中实现 waitFor 步骤。这是执行此操作的代码。

var url = "https://es-us.vida-estilo.yahoo.com/instagram-cierra-la-cuenta-de-una-modelo-por-ser-gorda-103756072.html";
var casper = require('casper').create({
  viewportSize: {width: 1280, height: 800},
});

casper.start(url, function() {
  this.echo('Opened page');
});

casper.waitForSelector('a.comments-title', function() {
  this.click('.comments-title');
});

casper.waitForSelector('ul.comments-list > li', function() {
  this.echo(this.getHTML('ul.comments-list'));
});

casper.run();

希望有帮助

【讨论】:

  • 这就是答案,问题是为什么页面还没有加载,我不得不等待,我是 casperjs 的新手。现在我在尝试删除所有 cmets 及其答案时遇到问题,但找不到可以帮助我的算法。尝试按下所有答案按钮,但只获得第一个 cmets 的第一个答案。
【解决方案2】:

问题是为什么页面还没有加载,我不得不等待,我是 casperjs 的新手。

现在我在尝试删除所有 cmets 及其答案时遇到问题,但找不到可以帮助我的算法。尝试按下所有答案按钮,但只获得第一个 cmets 的第一个答案。

casper.waitForSelector('button.showMore', function () {
     this.click('.showMore');
}, function onWaitTimeout() {        
});

var buttons;
casper.waitForSelector('ul.comments-list', function getLinks() {
buttons = this.evaluate(function ()
{         
   var buttons = document.getElementsByClassName('replies-button');
   buttons = Array.prototype.map.call(buttons, function (button) {
   button.click();      
   casper.waitForSelector('ul.comments-list', function () {
         casper.wait(3000, function () {
        });
   });
   return button.getAttribute('class');
   });
        return buttons;
   });
}, function onWaitTimeout() {

});

function wait5seconds() {
   casper.wait(3000, function () {      
   });
}
casper.waitForSelector('ul.comments-list > li', function () {  
   var x = this.getHTML('ul.comments-list');    
   this.echo(x);
}, function onWaitTimeout() {        
});

casper.run();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-28
    • 1970-01-01
    • 1970-01-01
    • 2014-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    相关资源
    最近更新 更多