Python requests.get仅在未指定页码时响应

2024-10-01 00:35:32 发布

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

我正在使用python使用请求和BeautifulSoup抓取web数据。我发现,我正在抓取的两个网站只有在我没有指定页码的情况下才会回复

以下代码起作用,允许我提取所需的数据:

headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)}

r = requests.get('https://www.milkround.com/jobs/graduate-software-engineer', headers = headers)
soup = BeautifulSoup(r.content, 'html5lib')
table = soup.find('div', attrs = {'class':'col-xs-12 job-results clearfix'})

但是,如果我更改链接以指定页码,例如:

r = requests.get('https://www.milkround.com/jobs/graduate-software-engineer?page=2', headers = headers)

然后请求永远不会响应。没有错误代码,控制台只是无限期地等待。这是什么原因造成的?如何解决

编辑:我以匿名方式手动打开了该网站。似乎当用页码打开时,我会得到一个“拒绝访问”的响应,但是如果我刷新页面,它会允许我进入吗


Tags: 数据httpscomget网站wwwjobssoftware
2条回答

这是因为如果你看到了,你就无法从外部访问网站上的页码。因此,如果您已登录并拥有某种cookie,则将其添加到您的标题中

我刚才在网站上查到的是你们试图访问错误的URI。并没有页码。您是否添加了自己的?页面=

您正在处理的问题是关于网页抓取。在您的情况下,由于您的标题声明缺少正确的用户代理定义,您的网页会被阻塞

要使其正常工作,您需要包括如下所示的用户代理声明:

headers={'user-agent':'Mozilla/5.0 (Linux; U; Android 0.5; en-us) AppleWebKit/522+ (KHTML, like Gecko) Safari/419.3',}

在这里,您可以更深入地探讨编写优秀web scraper的问题: https://towardsdatascience.com/5-strategies-to-write-unblock-able-web-scrapers-in-python-5e40c147bdaf

可在此处找到适当的用户代理列表: https://webscraping.com/blog/User-agents/

希望你能解决你的问题

相关问题 更多 >