我正试图在雅虎上获得新闻评论,其中有一个链接“查看反应”,其中包含以下内容:“caascommtbar-wide”并试图通过CasperJS,Selenium,ScrapySharp获取该元素,点击在链接上显示评论,但在那些工具中你永远找不到元素,我甚至尝试过使用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 ();
有谁知道为什么你无法访问评论所在的HTML代码的这一部分?
应该注意的是,在尝试访问新闻论坛中包含的Facebook评论时,我发生了同样的事情。
答案 0 :(得分:0)
正如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();
希望有所帮助
答案 1 :(得分:0)
问题是为什么页面还没有加载,我不得不等待,我是casperjs的新手。
现在我在尝试删除所有评论及其答案时遇到问题,但无法找到帮助我的算法。尝试按下所有答案按钮,但只获得第一个评论的第一个答案。
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();