gpt4 book ai didi

javascript - 使用phantomjs检索skyscanner结果的html代码

转载 作者:行者123 更新时间:2023-12-03 09:53:54 32 4
gpt4 key购买 nike

由于 skyscanner 只向大型商业网站提供 API,因此我想自己构建一个小型应用程序,以出于我自己的目的(非商业)检索多个目的地的结果。

我发现获取航类搜索结果似乎相当困难,因为页面需要几秒钟才能完成航类搜索并显示结果。

使用 wget、lynx、links2 或 edbrowse 对我来说不起作用,因为我得到的结果是我的浏览器中未启用 javascript,即使 links2 是使用 javascript 支持编译的。也许我做错了什么,我不知道。

然而,到目前为止,phantomjs 提供了最好的努力,我尝试了多个代码片段来检索航类搜索结果。

来源:

[Stackoverflow#1][1]
[Stackoverflow#2][2]
[Techslides][3]
[Stackoverflow#3][4]
[Stackoverflow#4][5]

[1]: http://stackoverflow.com/questions/18526140/how-to-get-html-generated-from-javascript-using-phantomjs
[2]: http://stackoverflow.com/questions/28209509/get-javascript-rendered-html-source-using-phantomjs
[3]: http://techslides.com/grabbing-html-source-code-with-phantomjs-or-casperjs
[4]: http://stackoverflow.com/questions/12450868/how-to-print-html-source-to-console-with-phantomjs
[5]: http://stackoverflow.com/questions/8692038/phantomjs-page-dump-script-issue

即使存在 [Stackoverflow#4][5] 中描述的时间延迟,它也不起作用。脚本结果(如果成功返回)仅显示 skyscanner 的错误页面,表明他们遇到了问题。

我尝试的最后一次导致所描述的错误页面的努力是:

var page = new WebPage(),t, address;
var fs = require('fs');

var url = 'http://www.skyscanner.at/transport/fluge/nyca/lax/150626/150627/flugpreise-von-new-york-nach-los-angeles-international-im-juni-2015.html?adults=1&children=0&infants=0&cabinclass=economy&rtn=1&preferdirects=false&outboundaltsenabled=false&inboundaltsenabled=false';

address = encodeURI(url);
page.open(address, function (status) {
if (status !== 'success') {
console.log('FAIL to load the address');
} else {
f = null;
var markup = page.content;
console.log(markup);
try {
f = fs.open('htmlcode.txt', "w");
f.write(markup);
f.close();
} catch (e) {
console.log(e);
}
}
phantom.exit();

});

以前有人尝试过类似的事情并成功吗?你是如何让它发挥作用的?我正在尝试在无 GUI 的 Debian-Linux 系统上构建基于 php 和/或基于 shell 脚本的解决方案。

最佳答案

我在 Skyscanner 从事工程工作。这不是您问题的答案,但是,如果您最终进入该错误页面(或验证码页面),则我们的机器人拦截器很可能正在捕获您。这是一种“设计使然”:)

我可以为您提供一个 API key ,但有保守的速率限制。这会引起兴趣吗?

干杯,

伊恩

关于javascript - 使用phantomjs检索skyscanner结果的html代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30800261/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com