【发布时间】:2023-01-12 15:36:31
【问题描述】:
我需要在 Glassdoor 上请求一家公司的所有评论页面,在某些情况下,可能有数千页。我正在尝试使用 grequests 来执行此操作,但我发现当我一次发送超过 100 个请求时,我将开始收到 403 error。
我想出了这段代码来将请求分成 100 个块:
"reviews_url": "https://www.glassdoor.com/Reviews/Apple-Reviews-E1138.htm?"
batch = 100
responses = []
for j in range(math.ceil(num_pages/batch)):
print("Batching requests: {}/{}".format(min(num_pages, (j+1)*batch),num_pages))
rs = (
grequests.get(
reviewsUrl.replace(".htm", "_P" + str(k + 1) + ".htm"),
headers=DEFAULT_HEADERS,
)
for k in range(min(num_pages, (j)*batch), min(num_pages, (j+1)*batch))
)
responses += grequests.map(rs)
time.sleep(uniform(10,15))
这行得通,我得到了我需要的东西,但它太慢了,我需要为大约 8000 家公司做这件事。有一个更好的方法吗?我尝试减少批次之间的睡眠时间并再次开始收到 403。
【问题讨论】:
-
我认为他们在源 IP 上设置了一些块,你需要相应地检查和模仿
标签: python web-scraping get grequests