【发布时间】:2020-04-03 08:51:14
【问题描述】:
我想从this site 输出一些值。通过浏览器检查器,我将URL 定位到具有我想要的信息的 JSON 中。使用 JSON 后,我可以很好地提取值。
问题在于 JSON 的 URL 仅在有限的时间内有效。如果我稍后尝试访问它(通过浏览器或通过脚本的 UrlFetch),我会得到:
{
"status": 401,
"response": "unauthorized"
}
由于我想定期检查目标 JSON,我想找到一种方法来授权请求。有任何想法吗?
谢谢!
PS:这是我迄今为止尝试过的(谷歌应用脚本):
function getUserAndJSON(){
var url = 'https://asunnot.oikotie.fi/api/cards?cardType=100&conditionType%5B%5D=1&conditionType%5B%5D=2&limit=24&locations=%5B%5B1669,4,%22Lauttasaari,%20Helsinki%22%5D,%5B14714,5,%2200340,%20Helsinki%22%5D%5D&lotOwnershipType%5B%5D=1&offset=0&price%5Bmax%5D=600000&price%5Bmin%5D=150000&roomCount%5B%5D=3&size%5Bmin%5D=35&sortBy=published_sort_desc';
var opt = {
"method": "GET",
"muteHttpExceptions": true,
"escaping":false,
"headers":JSON.parse(user)
}
var str = UrlFetchApp.fetch(url,opt).getContentText();
Logger.log(str); //error 401
}
【问题讨论】:
-
你能告诉我这个网址在网站上的什么位置吗?我需要看到它工作,然后可以检查它发送的请求标头。如您所见,您的 url 具有端点和正文,但要查看标头,您需要查看请求标头。您也可以在浏览器中通过打开您的网络窗口并查看此 api 发出请求的位置来执行此操作。让我知道这是否有效或需要任何其他帮助。
-
@1UC1F3R616 该网址是“此站点”下问题的第一个链接。我在开发工具下打开了网络选项卡,但我找不到发送请求标头的文件。帮助将不胜感激。干杯
-
问题是我看不到这个问题在哪里,整个网站都是用其他语言写的。在network选项卡下打开,然后点击任何api,现在旁边会出现Response,Request Header等选项。你点击它们然后检查它。
-
请提供包括标题在内的整个 401 状态响应。这将为您提供有关身份验证类型的提示,然后您可以使用它在每次收到 401 消息时生成令牌。公平使用身份验证机制的示例:en.wikipedia.org/wiki/Basic_access_authentication
-
@jlo 点击它们,然后会弹出一个窗口,我正在使用 Firefox。使用 Postman 测试 api,在 python 中有一个请求模块,你可以在其中发送 headers 和 cookie。
标签: javascript json web-scraping