Tom*_*mmy 4 web-scraping google-apps-script
我正在尝试使用Google Apps脚本从以下示例网页中提取数据:
url = http://www.premierleague.com/players/2064/Wayne-Rooney/stats?se=54
使用,UrlFetchApp.Fetch(url)
问题是当我使用UrlFetchApp.Fetch(url)来做到这一点时,我没有得到url中'se'参数定义的页面信息.相反,我获取有关以下URL的信息,因为它看起来像是异步加载'se = 54'页面:http: //www.premierleague.com/players/2064/Wayne-Rooney/stats
有没有办法以其他方式传递参数'se'?我正在查看该函数,它允许指定'选项',因为它们被引用,但有关该主题的文档非常有限.
非常感激任何的帮助.非常感谢
汤米
在浏览器中访问该网站并打开开发人员工具(F12或ctr-shift-i).单击网络选项卡,然后使用F5重新加载页面.将出现一个请求列表.在列表的底部,您应该看到为获取信息而发出的异步请求.这些请求从footballapi.pulselive.com以json格式获取数据.您可以在应用脚本中执行相同的操作.但是你必须发送一个正确的"origin"标题行,否则你的请求会被拒绝.这是一个例子.
function fetchData() {
var url = "http://footballapi.pulselive.com/football/stats/player/2064?comps=1";
var options = {
"headers": {
"Origin": "http://www.premierleague.com"
}
}
var json = JSON.parse(UrlFetchApp.fetch(url, options).getContentText());
for(var i = 0; i < json.stats.length; i++) {
if(json.stats[i].name === "goals") Logger.log(json.stats[i]);
}
}
Run Code Online (Sandbox Code Playgroud)
请尝试以下解决方案:
var options =
{
"method" : "GET",
"followRedirects" : true,
"muteHttpExceptions": true
};
var result = UrlFetchApp.fetch(url, options);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7279 次 |
| 最近记录: |