如何循环遍历加拿大经纬度构造URL抓取门店数据且避免被网站封禁
加拿大Circle K门店数据批量抓取实现方案
经纬度遍历逻辑说明
你需要遍历的参数范围如下:
- 纬度(lat):42 ~ 83(对应北纬范围)
- 经度(lng):-141 ~ -53(西经对应URL内的负数值)
建议设置步长为0.5度,既能覆盖全部区域避免漏抓门店,也能大幅减少总请求量,降低触发反爬的概率。
反爬优化核心规则
- 请求间隔设置随机值,不要使用固定间隔,避免被网站识别为机器行为
- 单次请求返回状态码异常时,主动增加重试间隔,连续失败3次直接跳过当前坐标段
- 对返回的门店数据按门店ID做去重处理,相邻坐标返回的重复门店不需要重复存储
- 可定期轮换User-Agent参数,避免单一请求特征被拦截
完整实现代码
import requests import time import random # 初始化去重集合,用来存已经抓取过的门店ID store_ids = set() # 坐标参数范围和步长设置 LAT_MIN, LAT_MAX = 42, 83 LNG_MIN, LNG_MAX = -141, -53 STEP = 0.5 # UA池,用来轮换请求头降低拦截概率 UA_LIST = [ 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.106 Safari/537.36', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Edge/114.0.1823.51 Safari/537.36' ] payload={} # 遍历所有坐标点 lat = LAT_MIN while lat <= LAT_MAX: lng = LNG_MIN while lng <= LNG_MAX: # 随机选UA构造请求头 headers = { 'Connection': 'keep-alive', 'sec-ch-ua': '" Not;A Brand";v="99", "Google Chrome";v="91", "Chromium";v="91"', 'Accept': '*/*', 'X-Requested-With': 'XMLHttpRequest', 'sec-ch-ua-mobile': '?0', 'User-Agent': random.choice(UA_LIST), 'Sec-Fetch-Site': 'same-origin', 'Sec-Fetch-Mode': 'cors', 'Sec-Fetch-Dest': 'empty', 'Referer': f'https://www.circlek.com/store-locator?Canada&lat={lat}&lng={lng}', 'Accept-Language': 'en-GB,en-US;q=0.9,en;q=0.8', 'dnt': '1' } url = f"https://www.circlek.com/stores_new.php?lat={lat}&lng={lng}&services=®ion=global" # 重试逻辑 retry_count = 0 while retry_count < 3: try: response = requests.request("GET", url, headers=headers, data=payload, timeout=10) if response.status_code == 200: # 此处可替换为你自己的解析、去重、存储逻辑 print(response.text) # 随机延时2-5秒再发下一个请求 time.sleep(random.uniform(2,5)) break else: # 状态码异常,等待更长时间再重试 retry_count +=1 time.sleep(random.uniform(10,15)) except Exception as e: retry_count +=1 time.sleep(random.uniform(10,15)) lng += STEP lat += STEP
内容的提问来源于stack exchange,提问作者John_Muir
相关产品推荐
相关产品推荐

