python的scrapy,Scrapy爬虫

  python的scrapy,Scrapy爬虫

  scrapy的流程

  该过程可描述如下:

  调度器请求-引擎-下载中间件-下载器

  下载器发送请求,得到响应——下载中间件——引擎——爬虫中间件——爬虫。

  爬虫提取url地址,组装成请求对象-爬虫中间件-引擎-调度器。

  爬虫提取数据-引擎-管道

  通过管道进行数据处理和存储。

  推荐:Python视频教程

  注意:

  图中的绿线代表数据的传输。

  注意中间件在图中的位置,这个位置决定了它的功能。

  注意发动机的位置。之前所有模块都是相互独立的,只和引擎交互。

  scrapy中各模块的具体功能

   1.scrapy项目实现流程

  创建一个垃圾项目:垃圾启动项目项目名称

  生成一个爬虫,scrapy genspider,爬虫名称的爬行范围是允许的。

  提取数据:改进spider,使用xpath等方法。

  保存数据:保存管道中的数据

  2. 创建scrapy项目

  命令:scrapy startproject项目名称

  例子:scrapy startproject myspider

  生成的目录和文件结果如下:

  settings.py中的关键字段和内涵

  用户代理设置ua

  robots txt _ observe是否符合robots协议?默认情况下,确实如此。

   CONCURRENT_REQUESTS设置并发请求的数量,默认为16。

   DOWNLOAD_DELAY下载延迟,默认无延迟。

  cookies _ enabled是否开启cookie,即默认开启每个带有前一个cookie的请求。

   DEFAULT_REQUEST_HEADERS设置默认请求头。

  SPIDER _ middleware爬虫中间件,设置过程和管道一样。

  DOWNLOADER _ middleware下载中间件

  创建爬虫

  命令:scrapy genspider爬虫名称允许爬行域名。

  生成的目录和文件结果如下:

  完善spider

  完善spider意味着通过方法进行数据提取和其他操作:

  注意:

  response.xpath方法的返回结果是一个类似list的类型,其中包含了selector对象。操作与List相同,但是还有一些额外的方法。

   extract()返回包含字符串的列表。

   extract_first()返回列表中的第一个字符串。如果列表为空,则不返回任何内容。

  Spider中的解析方法必须有

  要抓取的url地址必须属于allowed_domains,但start_urls中的url地址没有此限制。

  启动爬虫时注意启动位置,在项目路径下启动。

  数据传递到pipeline

  为什么要用收益率?

  把整个功能变成发电机有什么好处?

  遍历该函数返回值时,将数据逐个读入内存,不会造成内存瞬间占用过多。

  Python 3中的range与python2中的xrange相同。

  注意:

  Yield只能传递对象:BaseItem、Request、dict、None

  6. 完善pipeline

  管道在设置中可以打开多个,为什么需要打开多个?

  不同的管道可以处理不同爬虫的数据。

  不同的管道可以执行不同的数据处理操作,例如一个用于数据清理,一个用于数据保存。

  pipeline使用注意点

  使用前需要在设置中打开。

  设置中管道的键表示位置(即管道在工程中的位置可以自定义),值表示离发动机的距离。数据越接近,越早过去。

  当有多条管道时,process_item的方法必须返回item,否则后一条管道得到的数据为None。

  管道中的process_item方法必须可用,否则不能接受和处理项目。

  process _ item方法接受项目和蜘蛛,其中蜘蛛表示当前传递项目的蜘蛛。

  本文来自python教程专栏,欢迎学习!以上就是Python crawler -scrapy的介绍和使用细节。更多信息请关注盛行IT软件开发工作室的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: