Python 多线程爬取微博,写入 Mongodb 数量对不上

2019-03-04 21:48:16 +08:00
 XxxxD

迫于 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!')
2124 次点击
所在节点    Python
6 条回复
wzwwzw
2019-03-04 22:33:24 +08:00
微博的数据好像有保护。你检查一下 25 页之后是不是正常的访问。
chenqh
2019-03-04 23:53:57 +08:00
第 10 页,20 页的数据请求不到的吧,如果我没有理解错你的代码
zh826256645
2019-03-05 00:05:13 +08:00
如果你不确定你爬取的接口有没有做什么特殊的处理,建议先别使用多线程(协程)进行爬取,测试一次爬取的数据对不对得上
XxxxD
2019-03-05 08:38:07 +08:00
@zh826256645 @wzwwzw 好的,谢谢,我试试
@chenqh 这个应该没有吧,首先是 1-10,( 1-9 ), 然后 10-20,( 10-19 ),20-30 (20-29), 应该是没有落下
dadama
2019-03-05 11:38:35 +08:00
第 10 和 20 没取到吧,range1 到 10 不包含 10,后面加 10 又从 11 开始了
XxxxD
2019-03-06 08:20:38 +08:00
@dadama 是的,应该加 9 的,我弄错了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/541050

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX