多线程爬虫的实现----threading库的使用

1.作爬虫的时候为了提升抓取的速度,这个时候就需要开启多个线程同时抓取数据,今天就分享一下如何使用Python中的threading库实现多线程抓取数据

from shop import ShopSpider
import threading
import time

def loop(num1,num2):
    # 店铺数据抓取
    shop_spider = ShopSpider()
    shop_spider.login(num1)
    shop_spider.shop_crawl(num2)
    shop_spider.close_driver()


# 多线程开启数据抓取
def main(pools):
    threads = []
    list_t = []
    for i in range(0, pools):
        t = "t" + f"{i}"
        list_t.append(t)
    nloops = range(pools)
    for i in nloops:
        list_t[i] = threading.Thread(target=loop, args=(i,100))
        # loop为目标函数名,args为目标函数参数
        threads.append(list_t[i])

    for i in nloops:    # 开始线程
        threads[i].start()
        time.sleep(1)

    for i in nloops:    # 等待所有
        threads[i].join()   # 线程完成

if __name__ == "__main__":
    main(2)   # main中的参数决定线程数量

这里需要注意的是开启多线程一定要处理好内部的逻辑结构,不然就会出现混乱的情况,比如要使用循环的,第一个线程从0到100遍历,第二个同样的页面也从0到100遍历,这样就会造成混乱,因此使用多线程一定要注意内部的逻辑实现

2.使用scrapy分布式抓取也能提升抓取的效率,这里scrapy就不多说了,不会的可以去我之前的文章中查看,有详细的Scrapy使用方法,后续我也会更新scrapy的进一步使用

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不喜欢穿格子衫的程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值