zoukankan      html  css  js  c++  java
  • 爬虫实战篇---糗事百科爬虫(scrapy框架)

    前言:目标确定

    (1)、创建项目

    scrapy startproject qsbk

    (2)、技术路线

    scrapy框架的使用

    (3)、创建爬虫

    scrapy genspider spider qiushibaike.com (爬虫名不能与项目名重名)

    (3)、实战

    改写settings.py

    设置请求头模拟浏览器访问行为

    不遵从robots.txt行为

    限定下载速度

    启用pipelines,如有多个pipelines,数字小表示优先级越高

    改写items.py

     改写pipelines.py

    改写spider.py

    (5)、效果展示

    我们本次一共抓取到了325条数据

    (6)、总结(全爬虫流程分析)

    1、我们在spider中传入了初始url,并通过引擎传递给scheduler调度队列生成request请求并通过downloader middleware 进入downloader从互联网上下载数据,返回一个response对象,response是一个scrapy.http.response.html.HtmlResponse对象,可以通过css和xpath语法来提取数据

    2、提取出的数据是一个Selector or SelectorList对象,并通过downloader middle 经引擎传递给spider中的parse函数进行解析,我们通过getall()获取了字符串文本,列表类型,get()方法返回第一个值,str类型,这里我们亦可使用extract()返回的是列表类型,extract_first()返回列表中的第一个值,str类型

    3、解析后我们使用yield将函数转换为一个生成器,不断的从中抽数据,并传递给item pipeline进行处理

    4、在item pipeline中我们使用了三个核心方法和初始化函数,首先打来数据(这里采用__init__,当然你可以在open_spider()中执行,接着使用核心方法process——item进行数据处理,最后使用了close_spider()方法关闭了打开的数据)

    5、在保存json数据的时候可以使用JsonItemExporter和JsonLinesItemExporter这两个类来进行

    JsonItemExporter:每次将数据添加进内存最后写入磁盘,好处:一个满足json格式的数据。坏处:数据量较大时:内存占用较多(pipelines.py图片2)

    JsonLinesItemExporter:每次调用export_item的时候将数据存储到内存,好处:每次直接将数据写入硬盘,节省内存,适用于数据量较大的情况。坏处:不是一个满足json格式的数据(pipelines.py图片3)

    6、最后运行爬虫项目,得到目标结果

  • 相关阅读:
    [51nod] 1301 集合异或和
    [BZOJ] 1088: [SCOI2005]扫雷Mine
    [LUOGU] P4251 [SCOI2015]小凸玩矩阵
    8.21模拟赛
    [BZOJ] 3163: [Heoi2013]Eden的新背包问题
    [BZOJ] 1001: [BeiJing2006]狼抓兔子
    【NOIP2017提高A组冲刺11.8】好文章
    [BZOJ] 1520: [POI2006]Szk-Schools
    [BZOJ] 1877: [SDOI2009]晨跑
    day23(事务管理)
  • 原文地址:https://www.cnblogs.com/518894-lu/p/9168875.html
Copyright © 2011-2022 走看看