【发布时间】:2016-04-20 14:39:40
【问题描述】:
我正在使用 Nodejs 和 npm 模块 Phantom 来废弃网页。 单击跨度时,我需要的信息与 ajax 请求一起放置。
目标: 在网站“www.academiadasapostas.com/stats/team/961#tab=t_stats”中,我想点击“德甲”按钮来报废信息。
问题: 我无法直接转到按钮 url (www.academiadasapostas.com/stats/team/961#tab=t_stats&team_id=961&competition_id=9&page=1),我不知道如何在 Phantom 中点击按钮。
我的代码:
var url = 'https://www.academiadasapostas.com/stats/team/961#tab=t_stats';
phantomInstance.createPage()
.then((page) => {
phantomPage = page;
return page.open(url);
})
.then((status) => {
phantomPage.evaluate(function() {
//trying click
return document.querySelectorAll('[data-id]')[1].click();
})
.then(function(){
return phantomPage.property('content');
})
.then((content) => {
// handle content of page
});
});
HTML 快照:
<td>
<span class="competition all " data-id="0" onclick="teamAjax_Filterchange(this)" style="float: left; display: none;">Tudo
</span>
<span class="competition " data-id="9" onclick="teamAjax_Filterchange(this)">
<ul class="flag" title=""><li class="ar a80" title=""></li><li class="co c1"></li><li class="co chover"></li></ul>Bundesliga
</span>
<span class="competition " data-id="10" onclick="teamAjax_Filterchange(this)">
<ul class="flag" title=""><li class="ar a7" title=""></li><li class="co clc"></li><li class="co chover"></li></ul>UEFA Champions League
</span>
</td>
编辑 1: 我尝试了这个,但似乎也不起作用:
phantomPage.evaluate(function() {
var ev = document.createEvent("MouseEvent");
ev.initMouseEvent(
"click",
true /* bubble */, true /* cancelable */,
window, null,
0, 0, 0, 0, /* coordinates */
false, false, false, false, /* modifier keys */
0 /*left*/, null
);
return document.querySelectorAll('[data-id]')[1].dispatchEvent(ev);
})
【问题讨论】:
-
你试过this question的建议了吗?您必须将它们移植到为桥编写的方式。
-
是的,我尝试了 dispatchEvent 建议,但它似乎也不起作用。 (添加代码:编辑 1)
标签: javascript node.js web-scraping click phantomjs