爬取Zoopla网站时遭遇HTTP Error 403,疑似被识别为机器人
解决Zoopla爬取时的HTTP 403错误
原因
你碰到的403错误就是因为Zoopla的反爬系统把你的请求当成机器人了。只加个User-Agent根本不够,网站还会校验请求里的其他头部信息,甚至检测请求频率、会话一致性这些细节。
解决办法
1. 补全请求头信息
除了User-Agent,把浏览器正常发送的其他头部字段也加上,让请求更接近真人操作的特征:
import requests from bs4 import BeautifulSoup as soup headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8", "Accept-Language": "en-US,en;q=0.5", "Referer": "https://www.zoopla.co.uk/", "DNT": "1", "Connection": "keep-alive", "Upgrade-Insecure-Requests": "1" } url = "https://www.zoopla.co.uk/to-rent/property/west-midlands/handsworth/sandwell-road/b21-8nl/?q=B21%208NL&radius=1" # 用Session维持会话状态,更贴近浏览器的访问逻辑 session = requests.Session() response = session.get(url, headers=headers) print(response.status_code)
2. 控制请求频率
频繁的请求会直接触发反爬机制,建议在每次请求后添加随机延迟:
import time import random # 请求完成后随机延迟1-3秒 time.sleep(random.uniform(1, 3))
3. 遵守网站爬取规则
一定要查看Zoopla的robots.txt文件,确认你的爬取行为符合网站规定,避免因违规操作导致IP被永久封禁。
内容的提问来源于stack exchange,提问作者Vikas Rahar
相关产品推荐
相关产品推荐

