栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python爬虫|多线程爬虫的实现思路

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python爬虫|多线程爬虫的实现思路

在做爬虫项目的时候,想要提高相应的爬取效率,多线程爬虫是避免不了的。

下面,跟着小编直接进入主题,代码如下:

import requests
from threading import Thread
import random
from queue import Queue
import time

# 目标keyword
keyword_list = ['ring', 'rings for women', 'box', 'book', 'toy']

ua = ['Mozilla/5.0 (Windows NT 6.1; rv,2.0.1) Gecko/20100101 Firefox/4.0.1',
      'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11',
      'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.82 Safari/537.36']

headers = {'User-Agent': random.choice(ua),
           'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
           'accept-encoding': 'gzip, deflate, br'}


def get_url(in_q):
    for keyword in keyword_list:
        for page in range(1, 8):
            url = 'https://www.amazon.com/s?k=' + keyword.replace(' ', '+') + '&page=' + str(page)
            in_q.put(url)
            # print(in_q.queue)


def get_data(out_q):
    while 1:
        if out_q.empty() is False:
            url = out_q.get()
            print(url)
        else:
            break


if __name__ == '__main__':
    start = time.time()
    q = Queue(maxsize=10)   # 实例化队列,最大10个元素
    p1 = Thread(target=get_url, args=(q,))
    p1.start()

    # 创建5个线程
    for i in range(5):
        p2 = Thread(target=get_data, args=(q,))
        p2.start()
        p2.join()

    p1.join()

    end = time.time()
    print('spider_task over :%.2f' % (end - start))

这里用到了队列和线程的方法,可以让爬虫项目更加清晰明了,函数A负责生成url,函数B负责消费url。有过爬虫经验的同学,应该都能明白,这样的爬虫初始思路搭建好之后,我们只需将爬虫代码放入到函数B就行。

最后补充一点,在尾部,我们可以根据需求,来自由设定线程的数量(这里用for循环去实现的),爬虫代码这里就不细说了,有兴趣的朋友可以私信我。

运行之后,结果如下(这里由于请求量过少,时间上可以忽略不计):

 如果喜欢本文或者本文对你有帮助的话,记得关注小编并点个赞哟,欢迎留言私信。

python爬虫进阶之多线程爬虫——生产者和消费者

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/272953.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号