- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 PhantomJS 从 http://my.playstation.com/logged-in/trophies/public-trophies/ 中抓取奖杯数据
该页面要求您输入有效的用户名,然后单击“开始”,页面将加载数据。我已经让它在某种程度上起作用了,但它从未将奖杯数据加载到 div 中。我希望我错过了一些与ajax相关的东西导致了这个?
var fullpagehtml = page.evaluate(function()
{
document.getElementById("trophiesId").value = "<<valid user id>>";
//checkPTrophies(); btn click calls this function
$('#btn_publictrophy').click().delay( 6000 );
console.log("\nWaiting for trophy list to load...");
var trophylist = document.getElementById("trophyTrophyList").innerHtml; // all the data i want ends up inside this div
var counter = 0; //delay andset timeout wont work here so this is the best i coukld think of
while (trophylist == null)
{
//presumably the ajax query should kick in on the page and populate this div, but it doesnt.
trophylist = document.getElementById("trophyTrophyList").innerHtml;
counter ++;
if(counter == 1000000)
{
console.log($('#trophyTrophyList').html());
counter = 0;
}
}
return document.all[0].outerHTML;
});
最佳答案
delay( 6000 )
绝对不会像 documentation 那样做任何事情。说:
The
.delay()
method is best for delaying between queued jQuery effects. Because it is limited—it doesn't, for example, offer a way to cancel the delay—.delay()
is not a replacement for JavaScript's nativesetTimeout
function, which may be more appropriate for certain use cases.
要等待,您必须在页面上下文之外执行此操作(忙等待在 JavaScript 中不起作用,因为它是单线程的):
page.evaluate(function() {
document.getElementById("trophiesId").value = "<<valid user id>>";
//checkPTrophies(); btn click calls this function
$('#btn_publictrophy').click();
});
console.log("\nWaiting for trophy list to load...");
setTimeout(function(){
var fullpagehtml = page.evaluate(function() {
var trophylist = document.getElementById("trophyTrophyList").innerHTML;
return trophylist;
});
}, 20000);
您可能还想使用waitFor
等待填充#tropyTrophyList
,而不是使用setTimeout
:
waitFor(function(){
return page.evaluate(function(){
var e = document.getElementById("trophyTrophyList");
return e && e.innerHTML;
});
}, function(){
// TODO: get trophies
});
这不会让您走得太远,因为加载 #tropyTrophyList
并不意味着后代元素已经在 DOM 中。您必须找到一些选择器来表明页面已充分加载,例如通过等待页面中存在 .tropy-image
。它适用于我的 waitFor
函数 20 秒超时。
waitFor(function(){
return page.evaluate(function(){
var e = document.querySelector("#trophyTrophyList .trophy-image");
return e;
});
}, function(){
setTimeout(function(){
var trophiesDiv = page.evaluate(function(){
return document.getElementById("trophyTrophyList").innerHTML;
});
console.log(trophiesDiv);
}, 1000); // wait a little longer
}, 20000);
不要忘记您需要 page.evaluate
才能实际访问 DOM。顺便说一句,它是 innerHTML
而不是 innerHtml
。
关于javascript - 从 Playstation 官方网站抓取奖杯数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28206062/
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 8年前关闭。 Improve this qu
我是一名经验丰富的 Android 开发人员,我们与一个开发团队一起为 Android 创建了一个应用程序,这是一个用于镜像电视 channel 内容的移动应用程序。我们收到了一个请求,可能会制作一款
我正在尝试使用 PhantomJS 从 http://my.playstation.com/logged-in/trophies/public-trophies/ 中抓取奖杯数据 该页面要求您输入有效
我想要完成的事情的总结:我在 PS3 上玩 motorstorm 和第一场比赛纪念碑谷,排行榜在 ms 网站上不可用。这意味着我无法抓取排行榜数据。现在我用 wireshark 连接了我的 ps3,我
是否可以在站点上使用 Playstation 网络 API?我想创建一个站点,让 PSN 用户可以使用他们的 PSN 名称参加在线比赛 最佳答案 PSN API 有一个 PHP 包装器。它被 Tust
我对为 Sony PlayStation 2 游戏机创建软件/游戏很感兴趣,因为它们包含 强大 用于图形 (GPU)、浮点计算和通用 CPU 的处理器。 我获得了一个 PS2 主机 和它的 PS2 S
我正在尝试查找是否可以通过蓝牙向游戏机 3 等游戏机发送消息以使其打开或关闭?因为可以从 Controller 完成。我一直在阅读它。但想知道是否有任何信息或示例可以提供帮助。因为我能找到的只是 py
我想制作一张这样的 ps3 卡: http://gamercards.exophase.com/2516.png 使用来自 ps3 网站的数据,这个 http://us.playstation.com
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求提供代码的问题必须表现出对所解决问题的最低限度理解。包括尝试过的解决方案、为什么它们不起作用,以及预
我有兴趣为 Sony PlayStation 3 开发软件包含 的控制台多核Cell处理器 ,针对任何 PS3-compatible Linux分配。 "A single PS3 performs b
当链接像 Playstation 4 用户一样悬停时,有没有一种方法可以创建移动的发光效果(正如您在视频链接上看到的那样,当某些东西悬停时,发光会上下颠倒,从强烈变为不那么强烈)与 css 的界面(见
案例 这不是一个真正的游戏项目。它是一个全屏运行的项目,用于显示视频 session 和观看高清电视,并由 Remote 控制。 希望: 我正在寻找 GUI 库。开发全屏应用只有这种方法吗? http
在运行 rails s 或 rails c 时在项目 ruby v2.1.4 和 rails 3.2.13 /home/kop/.rvm/gems/ruby-2.1.4@rails3213/gem
我正在做一个需要低分辨率和大约 110 fps 的项目。所以我买了 30 美元的 PlayStation eye,它在 240 分辨率下以 320 提供 120 fps。 我安装了以前版本的 maca
对于 Vuejs 和 Bootstrap 4 与 PlayStation 4 上的互联网浏览器的兼容性,是否有任何解决方案?当我打开我的网站时,它只显示我们的背景颜色,仅此而已。 所以我想听听你的建议
几天来,我一直试图从 PS2 中获得正确答案STM32F411RE 上的游戏 handle (DualShock 2)Nucleo . 我使用 SPI和 USART接收消息。时钟频率设置为 8 MHz
我打算使用 XNA 做一个简单的游戏,我想增加使用 Play Station 2 Controller 的可能性。有没有办法检测它的输入? 最佳答案 XNA/.NET Framework 中没有可让您
我在 Linux(特别是 Ubuntu 12.04)上使用 C++ 进行编码,并且想使用 PlayStation SixAxis Controller (PS3 附带的类型)作为输入设备,最好是通过蓝
我想让 PS4 Controller 在我的 PC 上工作,然后通过 UART 将数据中继到微 Controller 。 问题是,我没有 Linux 的 C++ 编程经验。 uC 部分对我更有利。不过
我是一名优秀的程序员,十分优秀!