You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

不同地域爬取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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 11:45:00