php多线程抓取多个网页(Python—Queue模块基本使用方法详解(二)编程 )

优采云 发布时间: 2021-12-14 07:10

  php多线程抓取多个网页(Python—Queue模块基本使用方法详解(二)编程

)

  单线程和多线程爬取时间对比

  最近听了老师的建议,开始自学多线程爬虫。在开始多线程爬虫实战之前,做了三个准备,写了一篇博文,把准备过程中学到的东西分享给大家。有兴趣的兄弟们。你可以看看。有什么不对的,可以直接私信评论。

  Python——多线程编程(一)线程创建、管理、停止

  Python——多线程编程(二)线程安全(关键资源问题和多线程同步)

  Python-Queue模块基本使用详解

  本篇博文实战解析使用多线程爬虫爬取豆瓣电影信息

  1.为什么要学会使用多线程进行爬行

  之前写的博文和爬虫都是单线程爬虫,代码运行在MainThread下,也就是Python的主线程。但是当爬取的数据量达到一定程度时,单线程爬虫会耗时较长,无法满足大数据的数据时效性要求。这个时间问题的解决方案可以是多线程多进程。等待。爬虫主要的运行时间消耗是请求一个网页时的io阻塞,所以开启多线程,让不同的请求同时等待可以大大提高爬虫的效率。(自己的简单解释)

  2. 本次实战使用的模式-生产者、消费者模式(实战分析中详解)

  

  (1)某个模块负责生成数据,这个数据由另一个模块处理(这里的模块是广义的,可以是类、函数、线程​​、进程等)。

  (2) 生成数据的模块形象地称为生产者;处理数据的模块称为消费者。

  (3) 仅对生产者和消费者的抽象不足以成为生产者/消费者模型。

  (4)这种模式还需要生产者和消费者之间有一个缓冲区,充当中介。

  (5) 生产者将数据放入缓冲区,消费者从缓冲区中取数据。

  实战分析

  1.分析网页源代码并构造请求头(谷歌浏览器)

  Python帮助你了解你喜欢的人!爬取她的微博内容信息!(Ajax数据爬取)

  (1)网页信息(点击“加载更多”可以看到加载了电影信息,即Ajax动态加载。之前的博文中提到了如何抓取这类信息和抓取分析方法一致)

  

  (2)电影信息源代码所在位置(图片不是很清楚,但可以看出是json数据格式返回的数据,在XHR面板下由Aajx动态加载)

  

  (3)分析构造请求头(可以看到有请求参数,分析可以得到请求页面加载是由page_start参数控制的,每20个是一个页面,我可以通过我自己的爬虫,电影信息应该有384左右,这里以200电影信息为例)

  

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线