实际上,是在 page.settings
上。在 open
之前执行。
以下是针对您链接的页面使用它的示例:
var page = require('webpage').create();
page.settings.userAgent = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36';
page.open('http://www.oddsportal.com/baseball/usa/mlb/results/page/', function() {
window.setTimeout(function() {
var output = page.evaluate(function() {
return document.getElementById('tournamentTable')
.getElementsByClassName('deactivate')[0]
.getElementsByTagName('a')[0]
.textContent;
});
console.log(output);
}, 1000);
});
这个例子将会抓取表格中第一行匹配的名称。(在此刻,名称是 "San Francisco Giants - Boston Red Sox
")
关于你的评论,实际上你可以在 phantomjs 中使用 jQuery!请查看以下示例:
var page = require('webpage').create();
page.settings.userAgent = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36';
page.open('http://www.oddsportal.com/baseball/usa/mlb/results/page/', function() {
window.setTimeout(function() {
page.includeJs("http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js", function() {
var output = page.evaluate(function () {
return jQuery('#tournamentTable .deactivate:first a:first').text();
});
console.log(output);
});
}, 1000);
});
顺便说一下,在等待方面,建议您使用waitfor.js代替我在这些示例中使用的window.setTimeout
。
getElementsByClassName
很困难。 - khexnavigator
和其他内容。我建议您使用Selenium + Headless Chrome(使用标志--headless
,在chromeOptions中)。 - m3nda