我正在使用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)
然后请求永远不会响应。没有错误代码,控制台只是无限期地等待。这是什么原因造成的?如何解决
编辑:我以匿名方式手动打开了该网站。似乎当用页码打开时,我会得到一个“拒绝访问”的响应,但是如果我刷新页面,它会允许我进入吗
这是因为如果你看到了,你就无法从外部访问网站上的页码。因此,如果您已登录并拥有某种cookie,则将其添加到您的标题中
我刚才在网站上查到的是你们试图访问错误的URI。并没有页码。您是否添加了自己的?页面=
您正在处理的问题是关于网页抓取。在您的情况下,由于您的标题声明缺少正确的用户代理定义,您的网页会被阻塞
要使其正常工作,您需要包括如下所示的用户代理声明:
在这里,您可以更深入地探讨编写优秀web scraper的问题: https://towardsdatascience.com/5-strategies-to-write-unblock-able-web-scrapers-in-python-5e40c147bdaf
可在此处找到适当的用户代理列表: https://webscraping.com/blog/User-agents/
希望你能解决你的问题
相关问题 更多 >
编程相关推荐