如何使用api url返回null来抓取动态网页?

问题描述 投票:0回答:1

我有一个任务是抓住所有普利策奖得主,我发现这个页面有我想要的全部:https://www.pulitzer.org/prize-winners-by-year/2018

但我遇到了以下问题,

问题1:如何抓取动态页面?我使用python / urllib2.urlopen来获取页面的内容,但是这个动态页面不会从中返回真实内容。

问题2:然后我从devtool找到了一个API URL:https://www.pulitzer.org/cache/api/1/winners/year/166/raw.json。但是当我从urllib2.urlopen发送一个GET请求时,我总是得到null。怎么会发生?或者我该如何处理呢?

如果这对你来说太天真了,请说出一些单词,以便我可以从Google学到它。

提前致谢!

python web-crawler urllib2 dynamic-pages
1个回答
1
投票

处理的一种方法是使用请求模块创建会话。这样,它传递下一个api调用所需的必要会话详细信息,您还必须将另一个参数Referer传递给标头。这可以区分您在api电话中寻找的那一年。

import requests
s = requests.session()
url = "https://www.pulitzer.org/prize-winners-by-year/2017"
resp1 = s.get(url)
headers = {'Referer': 'https://www.pulitzer.org/prize-winners-by-year/2017'}
api = "https://www.pulitzer.org/cache/api/1/winners/year/166/raw.json"
data = s.get(api,headers=headers)

现在,您可以从数据中的响应中提取数据。

© www.soinside.com 2019 - 2024. All rights reserved.