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

二次信任 提交于 2020-03-07 03:02:44
- 管道的持久化存储:    - 数据解析(爬虫类)    - 将解析的数据封装到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

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!