当前位置:  开发笔记 > 编程语言 > 正文

使用BeautifulSoup 429错误使用Python进行Web抓取

如何解决《使用BeautifulSoup429错误使用Python进行Web抓取》经验,为你挑选了1个好方法。

拳头我不得不说,我对使用Python进行网络抓取非常陌生。我正在尝试使用这些代码行抓取数据

import requests
from bs4 import BeautifulSoup
baseurl ='https://name_of_the_website.com'
html_page = requests.get(baseurl).text
soup = BeautifulSoup(html_page, 'html.parser')
print(soup)

作为输出,我没有得到预期的HTML页面,但另一个HTML页面显示:内容抓取工具行为不当请使用robots.txt您的IP已受速率限制

为了检查我写的问题:

try:
page_response = requests.get(baseurl, timeout =5)
 if page_response.status_code ==200:
   html_page = requests.get(baseurl).text
   soup = BeautifulSoup(html_page, 'html.parser')

 else:
  print(page_response.status_code)
except requests.Timeout as e:
print(str(e))

然后我得到429(请求太多)。

我该怎么处理这个问题?这是否意味着我无法打印页面的HTML,是否阻止了我刮擦页面的任何内容?我应该旋转IP地址吗?



1> sniperd..:

如果您只点击页面一次并获得一个页面,429则可能不是您点击太多了。您无法确定429错误是否正确,这仅仅是他们的网络服务器返回的内容。我见过页面返回404响应代码,但页面还不错,合法丢失的页面上有200响应代码,只是服务器配置错误。他们可能只是429从任何漫游器返回,尝试将其更改User-Agent为Firefox,Chrome或“ Robot Web Scraper 9000”,然后看看您能得到什么。像这样:

requests.get(baseurl, headers = {'User-agent': 'Super Bot 9000'})

宣布自己为机器人或

requests.get(baseurl, headers = {'User-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36'})

如果您想更多地模仿浏览器。如果您只是说自己是机器人,则某些网站会返回更好的可搜索代码,而其他网站则相反。基本上是狂野的西部,必须尝试不同的事情。

如果确实要打很多,则需要在通话之间睡觉。这是完全由他们控制的服务器端响应。您还将要研究代码如何与之交互robots.txt,该文件通常位于Web服务器的根目录下,并包含蜘蛛希望遵循的规则。

您可以在此处阅读有关内容: 在python中解析Robots.txt

网上爬网既有趣又充满挑战,请记住,您是他们的客人,随时可能由于任何原因被任何网站阻止。所以踩得很好:)

推荐阅读
云聪京初瑞子_617
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有