【发布时间】:2021-06-29 17:13:23
【问题描述】:
所以下面的代码是假设穿越加拿大并获取 Circle K 的位置。
我要去 0.0001 因为事实上,像多伦多这样的城市的商店很密集,当检查 lat&lng 时下降到 4 sig。
当我运行代码时,我注意到一次检查 0.0001 需要很长时间才能以一种方式检查大约 42 的范围。
此外,当我运行代码时,我将连续获得相同的位置,因为区域差异为 0.0001,几乎没有商店不会导致发现任何新商店。
重复和慢磨的结合是我要问是否有人对如何加快这个过程有一些建议。
我正在考虑在 url 末尾添加 : &page=100 ,但这无济于事,因为代码只是将它视为第 100 页的内容输出,其中不包含之前的 99 页。
有没有办法一次输出 0-whatever 页面之间的页面?
我也包含了当前代码,以防我忽略了简单的修复。
因此,目标是一次请求更多数据并更快地扫描整个加拿大。
我的代码:
import requests
import json
import numpy as np
import csv
lat_lng = [(lat,long) for lat,long in zip(np.arange(42,84,0.01),np.arange(-142,-52,0.01))]
for latitude,longitude in lat_lng:
url = f"https://www.circlek.com/stores_new.php?lat={latitude}&lng={longitude}&services=®ion=global"
payload={}
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': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.106 Safari/537.36',
'Sec-Fetch-Site': 'same-origin',
'Sec-Fetch-Mode': 'cors',
'Sec-Fetch-Dest': 'empty',
'Referer': 'https://www.circlek.com/store-locator?Canada&lat=43.6529&lng=-79.3849',
'Accept-Language': 'en-GB,en-US;q=0.9,en;q=0.8',
'dnt': '1'
}
response = requests.request("GET", url, headers=headers, data=payload)
print(response.json())
还有当我添加页面时 url 的外观:https://www.circlek.com/stores_new.php?lat={latitude}&lng={longitude}&services=®ion=global&page=1
我觉得找到一种抓取多个页面的方法是可行的方法,但没有真正的方法。
提前致谢!
【问题讨论】:
-
请编辑段落以使其可读。考虑向朋友或老板提出这个问题。他们必须能够理解你想要什么。
-
如果我理解的话,你应该在你正在使用的 API 中查找分页。
标签: python web-scraping python-requests pagination