分页网站爬取问题:访问20+页面跳转至第1页的解决办法
解决Autotrader.co.uk无法访问20页以上内容的方案
核心原因判断
你遇到的跳转问题大概率是网站的地域限制——非英国IP仅能访问前20页内容,同时也可能叠加了反爬机制的限制。
浏览器端解决措施
- 用英国地区的VPN/代理切换IP,确保IP归属英国。切换后清空浏览器缓存和Cookie,再尝试直接输入第21页的URL访问。
- 把浏览器首选语言改成英语(英国),减少网站根据语言判断地域的可能性。
程序化实现方案
1. 配置英国IP代理
选择靠谱的英国原生IP代理(免费代理不稳定,建议用付费服务),在请求中加入代理配置。以Python的requests库为例:
import requests import random import time # 替换为你的英国代理地址 proxies = { 'http': 'http://uk-proxy-address:port', 'https': 'https://uk-proxy-address:port' } # 目标页面URL target_url = "https://www.autotrader.co.uk/car-dealers/search?sort=with-retailer-reviews&forSale=on&toOrder=on&postcode=NG15GA&radius=&make=&page=21" # 模拟英国用户的请求头 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36', 'Accept-Language': 'en-GB,en;q=0.9', 'Referer': 'https://www.autotrader.co.uk/car-dealers/search?sort=with-retailer-reviews&forSale=on&toOrder=on&postcode=NG15GA&radius=&make=&page=20' } # 维持会话,模拟持续访问 session = requests.Session() session.proxies.update(proxies) session.headers.update(headers) # 加入随机延迟,避免触发反爬 time.sleep(random.uniform(1, 3)) response = session.get(target_url) # 检查是否成功访问 print(f"状态码: {response.status_code}") print(f"最终跳转URL: {response.url}")
2. 关键配置要点
- 请求头模拟:必须设置
Accept-Language为en-GB,User-Agent用主流浏览器标识,还可以加上前一页的Referer,让请求更贴近真实用户行为。 - 会话保持:用
Session()对象维持会话,避免每次请求都被网站重新验证。 - 请求频率控制:每次请求间加入1-3秒的随机延迟,不要短时间内批量请求,防止被判定为爬虫。
3. 无头浏览器方案(如Playwright)
如果用无头浏览器模拟真实操作,同样需要配置英国代理和地域设置:
from playwright.sync_api import sync_playwright with sync_playwright() as p: browser = p.chromium.launch( proxy={ "server": "http://uk-proxy-address:port", # 若代理需要认证,添加username和password # "username": "your-username", # "password": "your-password" } ) context = browser.new_context( locale="en-GB", user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36" ) page = context.new_page() page.goto("https://www.autotrader.co.uk/car-dealers/search?sort=with-retailer-reviews&forSale=on&toOrder=on&postcode=NG15GA&radius=&make=&page=21") print(page.title()) browser.close()
注意事项
- 付费的英国原生IP代理稳定性更高,不容易被网站拉黑;免费代理可能很快失效,不适合长期爬取。
- 若仍出现跳转,可尝试清除会话中的Cookie后重新发起请求,或者更换一个新的英国IP。
内容的提问来源于stack exchange,提问作者Tenserflu
相关产品推荐
相关产品推荐

