迫于 sf 没人看,所以到这里来,具体
链接: https://segmentfault.com/q/1010000018385188
主要是想间隔性的爬取防止被 Ban,例如这个人的微博量很多,例如有 300 多页,我就想着多进程一次请求 9 个页面,然后赞停几秒,然后继续一次请求 9 个页面,循环直到请求完是我思路哪里不对么? 在线等,挺急的
if __name__ == '__main__':
p = Pool(9)
x = 1
y = 10
while y <= 30:
for i in range(x,y):
p.apply_async(getPage, args = (i,))
print('9 page done!')
time.sleep(random.randint(3,5)+random.random())
x += 10
y += 10
p.close()
p.join()
print('Done!')
1
wzwwzw 2019-03-04 22:33:24 +08:00
微博的数据好像有保护。你检查一下 25 页之后是不是正常的访问。
|
2
chenqh 2019-03-04 23:53:57 +08:00 via Android
第 10 页,20 页的数据请求不到的吧,如果我没有理解错你的代码
|
3
zh826256645 2019-03-05 00:05:13 +08:00
如果你不确定你爬取的接口有没有做什么特殊的处理,建议先别使用多线程(协程)进行爬取,测试一次爬取的数据对不对得上
|
4
XxxxD OP @zh826256645 @wzwwzw 好的,谢谢,我试试
@chenqh 这个应该没有吧,首先是 1-10,( 1-9 ), 然后 10-20,( 10-19 ),20-30 (20-29), 应该是没有落下 |
5
dadama 2019-03-05 11:38:35 +08:00 via Android
第 10 和 20 没取到吧,range1 到 10 不包含 10,后面加 10 又从 11 开始了
|