默认情况下,当我尝试使用Phantomjs报废本站时,Phantomjs会向服务器发送以下头:
"name":"User-Agent",
"value":"Mozilla/5.0 (Unknown; Linux i686) AppleWebKit/534.34 (KHTML, like Gecko) PhantomJS/1.9.1 Safari/534.34"}我得到了status 405 "Not Allowed"的回复。
我在Phantomjs引用中看到,为了模仿来自其他浏览器的请求,我应该更改我的用户代理值。在维基百科上,我找到了冒充Firefox在Ubuntu下的价值。
'name': 'User-Agent',
'value': 'Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:16.0) Gecko/20120815 Firefox/16.0'我应该把这个属性放在幻影的哪个部分?我应该将它们插入哪里--在page.open中,还是在page.open的顶部?
发布于 2013-08-20 00:18:50
实际上,是在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")
关于您的评论,实际上您可以在幻影use下面使用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);
});顺便说一句,为了等待,我建议您不要使用我在本示例中使用的window.setTimeout,而是使用waitfor.js。
https://stackoverflow.com/questions/18324125
复制相似问题