如何通过API URL返回null来抓取动态网页?

2024-10-04 01:26:29 发布

您现在位置:Python中文网/ 问答频道 /正文

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

但我有以下问题

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

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

如果这对你来说太幼稚了,请说出一些单词,这样我就可以从谷歌学习

提前谢谢


Tags: httpsorg网页内容bywww动态页面
1条回答
网友
1楼 · 发布于 2024-10-04 01:26:29

一种处理方法是使用requests模块创建会话。这样,它将传递下一个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)

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

相关问题 更多 >