使用pd.read_html爬取网页表格时遇HTTPError 403 Forbidden如何解决?
解决pd.read_html触发403 Forbidden错误的方法
403错误是因为网站反爬机制识别出请求来自脚本而非真实浏览器,通过添加请求头模拟浏览器访问即可解决,具体操作如下:
- 导入必要依赖库
除pandas外,还需要requests库发送带请求头的请求:
import pandas as pd import requests
- 构造请求头
添加User-Agent字段模拟浏览器标识(可替换为你当前使用浏览器的真实User-Agent):
headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36' }
- 发送请求并解析表格
先用requests获取网页内容,再传递给pd.read_html处理:
response = requests.get("https://covid19.ncdc.gov.ng/", headers=headers) # 确保请求成功,失败则抛出异常 response.raise_for_status() # 解析页面中的表格数据 covid = pd.read_html(response.text)[0].head() print(covid)
如果仍有问题,可补充更多请求头字段进一步模拟真实浏览器请求:
headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36', 'Accept-Language': 'en-US,en;q=0.9', 'Referer': 'https://covid19.ncdc.gov.ng/' }
另外注意不要频繁发送请求,必要时可添加time.sleep()设置延迟,避免触发网站频率限制。
内容的提问来源于stack exchange,提问作者sireorator
相关产品推荐
相关产品推荐

