【发布时间】:2016-11-03 08:53:39
【问题描述】:
各位开发者,我又带着一个问题回来了,
我正在尝试从该网站https://www.iamsterdam.com/nl/uit-in-amsterdam/uit/agenda 获取一些数据。我首先抓取了网站,但这样做时我想到他们有一个 api,而且速度会快得多。所以我试图从我试过的api中获取数据:
get-website.js:
var webPage = require('webpage');
var page = webPage.create();
var settings = {
operation: "POST",
encoding: "utf8",
headers: {
"Content-Type": "application/json"
},
data: JSON.stringify({
DateFilter: 03112016,
PageId: "3418a37d-b907-4c80-9d67-9fec68d96568",
Take: 2,
Skip: 12,
ViewMode: 1
})
};
page.open('https://www.iamsterdam.com/api/AgendaApi/', settings, function(status) {
console.log(page.content);
phantom.exit();
});
get-website.php
$phantom_script= 'get-website.js';
$response = exec ('phantomjs ' . $phantom_script);
echo $response;
但是我回来的东西看起来不太好:
Message":"An error has occurred.","ExceptionMessage":"Page could not be found","ExceptionType":"System.ApplicationException","StackTrace":" at Axendo.SC.AM.Iamsterdam.Controllers.Api.AgendaApiController.GetResultsInternal(RequestModel requestModel)\r\n at lambda_method(Closure , Object , Object[] )\r\n
etc.
这是萤火虫的图片:
我希望有人可以帮助我。
【问题讨论】:
-
你的PageId好像错了,刚刚用postman试了一下,得到了同样的页面响应。
-
@LuciaAngermüller 我通过查看添加网站发送的使用过的萤火虫获得了 PageId,所以应该不错。
-
关于你的数据显然是错误的,因为他说找不到页面,我认为可能是 PageID 的问题,但没有进一步的信息,这就像在黑暗中猜测
-
@AnnSophieAngermüller 我添加了一个萤火虫图像,您可以看到浏览器发送的数据与我发送的数据相同。
-
您向谁或如何发送请求?也许之前执行了一些其他脚本?
标签: javascript php api web-scraping phantomjs