不同地域爬取eBay Pokemon TCG数据结果不一致的解决方案咨询
解决eBay地理位置过滤结果集的方案
针对你遇到的eBay按地理位置限制Pokemon TCG商品结果的问题,以下是不用代理、通过调整URL参数或请求头的可行方案:
1. 修正地域相关URL参数的用法
你尝试的LH_PrefLoc=2实际是仅显示支持全球配送的商品,这就是结果减少的核心原因。如果想取消地域过滤,反而应该移除该参数,或尝试以下参数组合:
- 添加
LH_GlobalShipping=1:强制显示支持全球配送的商品,但不会额外过滤地域 - 改用搜索页而非分类页:分类页的地域限制逻辑更严格,通用搜索页的参数灵活性更高,可替换base_url为:
base_search_url = 'https://www.ebay.com/sch/i.html?_nkw=Pokemon+TCG&LH_Auction=1&_sop=5' - 尝试
siteid=100参数:指定eBay全球站点,部分场景下可突破地域限制:global_url = 'https://www.ebay.com/sch/i.html?_nkw=Pokemon+TCG&LH_Auction=1&_sop=5&siteid=100'
2. 调整请求头中的地域标识
eBay会通过请求头和Cookie判断用户地域,可直接模拟你测试中结果量最高的芬兰地区的请求特征:
- 修改
Accept-Language头:header = { 'Accept-Language': 'fi-FI,fi;q=0.9,en-US;q=0.8,en;q=0.7', # 保留原有User-Agent等其他头信息 } - 添加地域相关Cookie:
cookies = { 'ebayl': 'fi-FI', 'GEOIP': 'FI', 'country': 'FI' }
3. 移除无效的自定义参数
你添加的Region并非eBay公开支持的搜索参数,所以完全没有效果。建议直接移除所有自定义地域参数,仅保留核心搜索条件,再结合上述请求头/Cookie调整,反而可能获取更完整的结果。
4. 基于测试结果的针对性优化
从你的测试数据来看,芬兰地区能获取最多结果(209,539条),说明该地域的结果集最完整。可以直接模拟芬兰用户的请求特征,无需切换代理:
- 固定使用芬兰地区的
Accept-Language和Cookie配置 - 可选尝试添加
X-Forwarded-For头(部分场景下有效,注意使用芬兰IP段示例):header['X-Forwarded-For'] = '193.166.0.1'
代码调整示例
基于你的现有代码,可修改请求头和Cookie部分:
base_url = 'https://www.ebay.com/b/Pokemon-TCG/2536/bn_7117595258?LH_Auction=1&rt=nc&_sop=5' # 固定芬兰地域的Cookie cookies = { 'ebayl': 'fi-FI', 'GEOIP': 'FI', 'country': 'FI' } country_results = [] for proxy in tqdm(ebay_proxies[1:]): try: # 构造芬兰地区的请求头 header = { 'Accept-Language': 'fi-FI,fi;q=0.9,en-US;q=0.8', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36' } proxy_country = get_location(proxy[0]["https"].split(":")[0], header, proxy[0], cookies)["country"] SP = {} for key, val in {"base_url": base_url}.items(): soup, header, session = retrieve_soup(URL=val, proxy=proxy[0], headers=header, cookies=cookies) results = soup.find('h2', {'class': 'srp-controls__count-heading'}).text SP[key] = results SP["country_proxy"] = proxy_country country_results.append(SP) except: print("proxy failed")
注意事项
- eBay的反爬机制会动态调整参数,上述方案可能随时间失效,需定期验证参数有效性
- 保持你的友好爬虫策略(20秒以上请求间隔),避免触发eBay的访问限制
内容的提问来源于stack exchange,提问作者Rivered
相关产品推荐
相关产品推荐

