PhantomJS queryselector().textcontent returns 没有
PhantomJS queryselector().textcontent returns nothing
我正在尝试从网页中获取一个数字:https://www.svenskaspel.se/resultat/keno 使用 phantomjs,但是 evaluate() returns 什么都没有。
页面上有20个这样的号码:
<span class="result-ball-number ">28</span>
其中一个数字是 "crowned"(span-tag 中有两个 类)
<span class="result-ball-number result-ball-number-kungkeno">47</span>
在 phantomjs 中,我得到所有数字的 array/list:
list = document.querySelectorAll(".result-ball-number");
但是无论我尝试什么,获取 'crowned' 号码都失败了。
document.querySelector(".result-ball-number-kungkeno").textContent;
这个有效:
var ua = page.evaluate(function() {
var list = [];
ll = document.getElementsByClassName("result-ball-number");
for(i=0;i<20;i++) {
list.push(ll[i].textContent);
}
return list;
});
这失败了:
var ua = page.evaluate(function() {
var tmp = document.querySelector(".result-ball-number-kungkeno").textContent;
return tmp;
});
问题是 'span' 标签有两个 类 吗?
在 firefox webinspector 中,我通过多种方式获得了号码,没有任何问题,
document.querySelectorAll(".result-ball-number-kungkeno")[0].textContent
document.querySelector(".result-ball-number-kungkeno").textContent
或
k = document.getElementsByClassName("result-ball-number-kungkeno")
k[0].textContent
..给我号码。
在 PhantomJS 中,它不起作用。
等待页面上的脚本完成它们的工作:
var page = require('webpage').create();
var url = "https://www.svenskaspel.se/resultat/keno";
page.viewportSize = { width: 1280, height: 800 };
page.open(url, function(status) {
page.render("just loaded.jpg");
setTimeout(getKeno, 2500);
});
function getKeno()
{
page.render("keno.jpg");
var num=page.evaluate(function() {
var k = document.querySelector(".result-ball-number-kungkeno").textContent;
return k;
});
console.log(num);
phantom.exit();
}
47
使用无头浏览器时,一个非常有用的做法是不时制作屏幕截图。此外,在尝试获取对象的内容时,请首先确保有一个对象。
page.open(url, function(status) {
page.render("just loaded.jpg");
getKeno();
});
function getKeno()
{
var numKeno = page.evaluate(function(){
return document.querySelectorAll(".result-ball-number-kungkeno").length;
});
if(numKeno == 0)
{
console.log("waiting...");
setTimeout(getKeno, 500);
}
else
{
page.render("keno.jpg");
var num=page.evaluate(function() {
var k = document.querySelector(".result-ball-number-kungkeno").textContent;
return k;
});
console.log(num);
phantom.exit();
}
}
我正在尝试从网页中获取一个数字:https://www.svenskaspel.se/resultat/keno 使用 phantomjs,但是 evaluate() returns 什么都没有。
页面上有20个这样的号码:
<span class="result-ball-number ">28</span>
其中一个数字是 "crowned"(span-tag 中有两个 类)
<span class="result-ball-number result-ball-number-kungkeno">47</span>
在 phantomjs 中,我得到所有数字的 array/list:
list = document.querySelectorAll(".result-ball-number");
但是无论我尝试什么,获取 'crowned' 号码都失败了。
document.querySelector(".result-ball-number-kungkeno").textContent;
这个有效:
var ua = page.evaluate(function() {
var list = [];
ll = document.getElementsByClassName("result-ball-number");
for(i=0;i<20;i++) {
list.push(ll[i].textContent);
}
return list;
});
这失败了:
var ua = page.evaluate(function() {
var tmp = document.querySelector(".result-ball-number-kungkeno").textContent;
return tmp;
});
问题是 'span' 标签有两个 类 吗?
在 firefox webinspector 中,我通过多种方式获得了号码,没有任何问题,
document.querySelectorAll(".result-ball-number-kungkeno")[0].textContent
document.querySelector(".result-ball-number-kungkeno").textContent
或
k = document.getElementsByClassName("result-ball-number-kungkeno")
k[0].textContent
..给我号码。
在 PhantomJS 中,它不起作用。
等待页面上的脚本完成它们的工作:
var page = require('webpage').create();
var url = "https://www.svenskaspel.se/resultat/keno";
page.viewportSize = { width: 1280, height: 800 };
page.open(url, function(status) {
page.render("just loaded.jpg");
setTimeout(getKeno, 2500);
});
function getKeno()
{
page.render("keno.jpg");
var num=page.evaluate(function() {
var k = document.querySelector(".result-ball-number-kungkeno").textContent;
return k;
});
console.log(num);
phantom.exit();
}
47
使用无头浏览器时,一个非常有用的做法是不时制作屏幕截图。此外,在尝试获取对象的内容时,请首先确保有一个对象。
page.open(url, function(status) {
page.render("just loaded.jpg");
getKeno();
});
function getKeno()
{
var numKeno = page.evaluate(function(){
return document.querySelectorAll(".result-ball-number-kungkeno").length;
});
if(numKeno == 0)
{
console.log("waiting...");
setTimeout(getKeno, 500);
}
else
{
page.render("keno.jpg");
var num=page.evaluate(function() {
var k = document.querySelector(".result-ball-number-kungkeno").textContent;
return k;
});
console.log(num);
phantom.exit();
}
}