• - 管道的持久化存储、- 基于Spider父类进行全站数据的爬取、手动请求发送、scrapy五大核心组件、scrapy的中间件、selenium在scrapy中的使用流程


    - 管道的持久化存储:
    - 数据解析(爬虫类)
    - 将解析的数据封装到item类型的对象中(爬虫类)
    - 将item提交给管道:yield item(爬虫类)
    - 在官大类的process_item中接收item对象并且进行任意形式的持久化存储操作(管道类)
    - 在配置文件中开启管道
    - 细节:
    - 将爬取的数据进行备份?
    - 一个管道类对应一种平台的持久化存储
    - 有多个管道类是否意味着多个管道类都可以接受到爬虫文件提交的item?
    - 只有优先级最高的管道才可以接受到item,剩下的管道类是需要从优先级最高的管道类中接收item

    - 基于Spider父类进行全站数据的爬取
    - 全站数据的爬取:将所有页码对应的页面数据进行爬取
    - 手动请求的发送(get):
    yield scrapy.Request(url,callback)
    - 对yield的总结:
    - 向管道提交item的时候:yield item
    - 手动请求发送:yield scrapy.Request(url,callback)
    - 手动发起post请求:
    yield scrapy.FormRequest(url,formdata,callback):formdata是一个字典表示的是请求参数

    - scrapy五大核心组件
    引擎(Scrapy)
    用来处理整个系统的数据流处理, 触发事务(框架核心)
    调度器(Scheduler)
    用来接受引擎发过来的请求, 压入队列中, 并在引擎再次请求的时候返回. 可以想像成一个URL(抓取网页的网址或者说是链接)的优先队列, 由它来决定下一个要抓取的网址是什么, 同时去除重复的网址
    下载器(Downloader)
    用于下载网页内容, 并将网页内容返回给蜘蛛(Scrapy下载器是建立在twisted这个高效的异步模型上的)
    爬虫(Spiders)
    爬虫是主要干活的, 用于从特定的网页中提取自己需要的信息, 即所谓的实体(Item)。用户也可以从中提取出链接,让Scrapy继续抓取下一个页面
    项目管道(Pipeline)
    负责处理爬虫从网页中抽取的实体,主要的功能是持久化实体、验证实体的有效性、清除不需要的信息。当页面被爬虫解析后,将被发送到项目管道,并经过几个特定的次序处理数据。
    - scrapy的请求传参
    - 作用:实现深度爬取。
    - 使用场景:如果使用scrapy爬取的数据没有存在同一张页面中
    - 传递item:yield scrapy.Request(url,callback,meta)
    - 接收item:response.meta

    - 提升scrapy爬取数据的效率
    - 在配置文件中进行相关的配置即可:
    增加并发:
    默认scrapy开启的并发线程为32个,可以适当进行增加。在settings配置文件中修改CONCURRENT_REQUESTS = 100值为100,并发设置成了为100。

    降低日志级别:
    在运行scrapy时,会有大量日志信息的输出,为了减少CPU的使用率。可以设置log输出信息为INFO或者ERROR即可。在配置文件中编写:LOG_LEVEL = ‘INFO’

    禁止cookie:
    如果不是真的需要cookie,则在scrapy爬取数据时可以禁止cookie从而减少CPU的使用率,提升爬取效率。在配置文件中编写:COOKIES_ENABLED = False

    禁止重试:
    对失败的HTTP进行重新请求(重试)会减慢爬取速度,因此可以禁止重试。在配置文件中编写:RETRY_ENABLED = False

    减少下载超时:
    如果对一个非常慢的链接进行爬取,减少下载超时可以能让卡住的链接快速被放弃,从而提升效率。在配置文件中进行编写:DOWNLOAD_TIMEOUT = 10 超时时间为10s

    CONCURRENT_REQUESTS = 100
    LOG_LEVEL = 'ERROR'
    COOKIES_ENABLED = False
    RETRY_ENABLED = False
    DOWNLOAD_TIMEOUT = 1

    - scrapy的中间件
    - 爬虫中间件
    - 下载中间件(***):处于引擎和下载器之间
    - 作用:批量拦截所有的请求和响应
    - 为什么拦截请求
    - 篡改请求的头信息(UA伪装)
    - 修改请求对应的ip(代理)
    - 为什么拦截响应
    - 篡改响应数据,篡改响应对象
    - 爬取网易新闻的新闻标题和内容

    - selenium在scrapy中的使用流程
    - 在爬虫类中定义一个bro的属性,就是实例化的浏览器对象
    - 在爬虫类重写父类的一个closed(self,spider),在方法中关闭bro
    - 在中间件中进行浏览器自动化的操作
    - 作业:
    - 网易新闻
    - http://sc.chinaz.com/tupian/xingganmeinvtupian.html网站中的图片数据进行爬取

    进入数据库:
    mysql -uroot -p

    创建表结构:
    create table wangyi (title varchar(200),content varchar(9999));

    显示表信息:
    desc wangyi;

    提交事物:
    commit;

    执行虫子:
    scrapy crawl wangyi

  • 相关阅读:
    简易计算机
    作业-继承
    exception
    作业-窗口
    作业-数字
    作业8
    作业9-1
    作业9-2
    book
    成绩录入
  • 原文地址:https://www.cnblogs.com/zhang-da/p/12432074.html
Copyright © 2020-2023  润新知