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、最后运行爬虫项目,得到目标结果

  • 相关阅读:
    [Linux] 解决CentOS下Requires: libjson-c.so错误
    磁盘分区就是这么简单,电脑小白都能看懂的磁盘分区教程!
    Linux常见压缩、解压缩
    安装/删除MySQL数据库
    MapReduce与Yarn 的详细工作流程分析
    SQL 增、删、改、查语句
    Apache Kylin 概述
    DHCP服务器配置及测试
    忘记root密码
    记第一次重装系统
  • 原文地址:https://www.cnblogs.com/518894-lu/p/9168875.html
Copyright © 2011-2022 走看看