爬虫的多进程插入数据到mongodb, 数据对不上

发布于 2022-09-11 18:07:18 字数 661 浏览 25 评论 0

最近在用多进程爬微博的api, getPage 函数是一次api请求一个页面,一次api请求返回10条个人动态,然后写入到mongodb函数库里面。

我的逻辑是例如这个人的微博量很多,例如有300多页,我就想着多进程一次请求9个页面,然后赞同几秒,然后继续一次请求9个页面,循环直到请求完

如下面这里最后不是应该爬取到 993=243条动态么,但是我mongodb数据库显示才100条,而且有好几次数据都都对不上,我有点奇怪,apply_async, 但是join了不是会等待所有进程结束的么,为什么最后的数量对不上呢?

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!')

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文