使用Python爬取Target搜索结果遇反爬,如何提取商品名、价格等信息?
Target平台搜索结果爬取可行解决思路
- 优先调用官方公开的搜索接口获取JSON数据
打开浏览器F12开发者工具,切换到「网络」面板,筛选「Fetch/XHR」类型的请求,刷新目标搜索页后,通过关键词search、product、price过滤请求,就能找到Target官方的搜索接口,常规格式为https://redsky.target.com/redsky_aggregations/v1/web_platform/search。请求时只需带上从浏览器复制的公开x-api-key请求头、对应搜索参数,就能直接拿到结构化JSON结果,可直接提取商品名称、TCIN字段(即商品ID)、价格字段,无需解析页面。 - 改造Selenium绕过前端反爬验证
原生Selenium存在明显的自动化特征会被Target识别,可替换使用undetected-chromedriver库,启动时添加参数--disable-blink-features=AutomationControlled、--headless=new,配置随机User-Agent,适当拉长请求间隔,即可绕过身份验证拿到渲染完成的页面。拿到页面后无需解析DOM,可直接通过driver.execute_script("return window.__INITIAL_STATE__")提取页面预加载的全量商品数据,效率更高。 - 完善Requests请求上下文绕过封禁
直接用Requests请求时不要只带User-Agent,需复制浏览器正常请求的完整请求头(包含Accept、Accept-Language、Referer等字段),使用requests.Session()维持会话,先访问Target首页获取匿名Cookie后再请求搜索接口,同时添加随机请求延迟,搭配代理池轮换IP即可避免IP被封禁。
内容的提问来源于stack exchange,提问作者Stephan Yazvinski
相关产品推荐
相关产品推荐

