- 创建工程:
            - scrapy startproject projectName(工程名称)
- cd 进工程文件夹
            - cd projectName
- 在spiders子目录创建爬虫文件,终端命令如下:
             - scrapy genspider spiderName www.xxx.com
             - 其中  spiderName(爬虫文件名称)   www.xxx.com  (爬取网址)
             - 就可以发现文件了
- 执行工程
            - scrapy crawl spiderName   --nolog   (选项参数可选,不输出日志信息,默认输出日志信息,一般不选择这个选项)
- 若日志信息过于扰乱实现    可以在setting中添加
            #显示指定类型的日志信息
            - LOG_LEVEL = "ERROR"
- 持久化存储:
        - 基于终端
            - scrapy crawl name -o  filePath
            - 该方法只能存储parse方法的返回值
            - 并且有格式要求   csv xml等等
        - 基于管道
            - 编码流程
                - 数据解析
                - 在item类中定义相关属性(items.py)
                - 将解析到的数据存储到item类型对象中
                - 将item对象提交给管道进行持久化存储
                - 在管道类的process_item中将其接收到的item对象中的数据进行持久化存储
                - 在配置中开启管道
            - 注:可以重写爬虫类:
                    -   open_spider(self,spider):
                    -   close_spider(slef,spider):
        - 面试题:如何将数据一份存到本地,一份存到数据库
                - 在管道类中多写一个管道类
                - 在设置中设置新管道类的优先值
                - item只会传递给优先值最高的管道类,要想传递给下一个管道类,需要加  return item语句
                - 须养成每个管道类的process_item最后加上return item语句,便于后期的维护和更新
        - 全站数据爬取:
                - url不放在start_url中
                - 每次调用parse函数最后拼接好下一个url
                - 调用 yield scrapy.Request(url = new_url, callback = self.parase)即可爬取下一条数据

- 五大核心部件:分别为引擎、下载器、调度器、spider(爬虫文件)、管道
                - 爬虫文件的作用:
                a. 解析数据
                b. 发请求
              - 调度器:
                a. 队列(队列是一种数据结构,拥有先进先出的特性。)
                b. 过滤器(过滤器适用于过滤的,过滤重复的请求。)
                调度器是用来调度请求对象的。
               - 引擎:
                所有的实例化的过程都是由引擎来做的,根据那到的数据流进行判断实例化的时间。
                   处理流数据
                   触发事务
                - 下载器
                   a. 下载器拿到请求后将请求拿到互联网进行数据下载
                   b. 互联网将下载好的数据发送给下载器,此时下载好的数据是封装在响应对象中的
                   c. 下载器将响应对象发送给引擎,引擎接收到了响应对象,此时引擎中存储了从互联网中下载的数据。
                - 管道
                    持久化存储 item
        - 请求传参
                - 可以在爬虫文件中另外定义解析函数作为回调函数,并且给回调函数传递参数meta = {}
                - yield scrapy.Request(url = detail_url,callback = detail_url,meta = {'item' : item})
        - 基于scrapy 框架的图片爬取和保存
                - ImagePipeline类:
                    - 只需将图片的src解析出交给ImagePipeline类即可
                - 使用流程:
                    - 重写管道类的ImagePipeline
                    - 重写三个方法
                        - get_media_request(self, item, info)  发送图片下载请求函数
                        - file_path(self, request, response=None, info=None, *, item=None )文件名称函数
                        - item_completed(self, result, item, info)下载完成函数,每次图片爬取完成都会调用此函数,此函数可以将item传递给下一个管道类
                    相关信息,请查阅网上描述
                    如下:
                        def get_media_requests(self, item, info):
                            yield scrapy.Request(item['url'])

# 制定图片名称
                        def file_path(self, request, response=None, info=None, *, item=None):
                            return str(time.time()) + ".jpg"

def item_completed(self, result, item, info):  # 传给下一个pipeline类
                            return item
        - CrawlSpider   是基于Spider父类的子类
            - 比Spider拥有更多的方法功能
            - 全站数据爬取:
                - 基于Spider
                - 基于CrawlSpider爬取
                    - 创建爬虫文件
                        - scrapy genpsider -t crawl xxx www.xxx.com
                    - 链接提取器
                        - LinkExtrator(allow = r'Item')
                            - allow 后为匹配的正则表达式,用于指定链接的提取
                        - Rule(LinkExtrator(allow = r'Item'), callback= 'parse_item',follow= False)
                            - callback  为每次提取到链接调用的分析回调函数

python-scrapy框架学习笔记相关推荐

  1. python Scrapy 从零开始学习笔记(一)

    Scrapy 官方网址: https://docs.scrapy.org/en/latest/ Scrapy 中文网址: https://scrapy-chs.readthedocs.io/zh_CN ...

  2. Scrapy框架学习笔记

    在Pycharm中新建一个项目KwScrapySpider 2.File->setting->Python Interpreter安装scrapy 打开Terminal,执行命令: scr ...

  3. Scrapy框架学习笔记 - 爬取腾讯招聘网数据

    文章目录 一.Scrapy框架概述 (一)网络爬虫 (二)Scrapy框架 (三)安装Scrapy框架 (四)Scrapy核心组件 (五)Scrapy工作流程 二. Scrapy案例演示 (一)爬取目 ...

  4. Scrapy框架学习笔记:猫眼爬虫

    文章目录 一.提出任务 二.实现任务 (一)创建PyCharm项目 - MaoyanCrawler (二)创建Scrapy项目 - Maoyan (三)利用指令生成爬虫程序基本框架 (四)修改全局配置 ...

  5. Python Flask框架学习笔记14

    数据库一对一的关系: 实现一对一的关系,只需要在一对多的基础上,将"多"的那一端设置为"一"即可. 书上举得例子是:用户拓展表. 在公司业务增长的情况下,需要存 ...

  6. python表单提交的两种方式_Flask框架学习笔记之表单基础介绍与表单提交方式

    本文实例讲述了Flask框架学习笔记之表单基础介绍与表单提交方式.分享给大家供大家参考,具体如下: 表单介绍 表单是HTML页面中负责数据采集功能的部件.由表单标签,表单域和表单按钮组成.通过表单,将 ...

  7. python白帽子学习笔记(整合)

    python白帽子学习笔记(整合) 学习笔记目录 python白帽子学习笔记(整合) 前言 一.基础篇 1.正则表达式 2.列表 3.元组带上了枷锁的列表 4.奇葩的内置方法 5.格式化字符 6.序列 ...

  8. python标准库学习笔记

    原创:python标准库学习笔记 数据结构 bisect 模块里实现了一个向列表插入元素时也会顺便排序的算法. struct - 二进制数据结构:用途:在 Python 基本数据类型和二进制数据之间进 ...

  9. 无敌python爬虫教程学习笔记(二)

    系列文章目录 无敌python爬虫教程学习笔记(一) 无敌python爬虫教程学习笔记(二) 无敌python爬虫教程学习笔记(三) 无敌python爬虫教程学习笔记(四) 手刃一个小爬虫 系列文章目 ...

  10. 大数据第二阶段Python基础编程学习笔记(待完善)

    大数据第二阶段Python基础编程学习笔记(待完善) 第一章 Python基础语法 3.8 1-1Python概述 python基础部分: ●Python基础语法: 标识符,关键字,变量,判断循环.. ...

最新文章

  1. SAP 没有激活HUM功能照常可以使用Handling Unit
  2. js对html进行转义和反转义的操作
  3. nexus-3.6.0-02-unix.tar.gz安装(Centos下),maven setting.xml配置案例,项目root的pom.xml配置,parent-pom的pom.xml配置案例
  4. C# 系统应用之无标题窗体移动的两种方法
  5. .hpp文件_文件上传漏洞另类绕过技巧及挖掘案例全汇总
  6. 趣学算法之斐波拉契数列实现
  7. session对象和applicatione对象
  8. Linux下用Java获取本机IP
  9. 智能优化算法:龙格-库塔优化算法 - 附代码
  10. 为什么家里pm25比外面高_你绝对不会相信在家用卷发棒烫发竟然比在外面烫发更伤发?...
  11. 天翼云盘v6.3.5绿色精简版
  12. As a good Java programer
  13. java textfield 右对齐_TextField右对齐问题javafx
  14. Java对象内存大小计算
  15. 将java项目部署到腾讯云服务器
  16. 基于STM32单片机的密码锁(Proteus仿真+程序+报告)
  17. Linux命令详解:md5sum
  18. Linux新加硬盘挂载
  19. 关于C++中公有继承、私有继承、保护继承的讨论
  20. 2017年迄今最新人工智能资源

热门文章

  1. pdfpcell输出换行_poi导出Excel(cell单元格里的一串文字,换行显示,设置字体)...
  2. Jquery第一章基础、过滤、层次选择器第二节1/2
  3. apache 版本_Apache官宣!ShardingSphere首个Apache版本发布
  4. Codeforce C. Bus
  5. Linux卸载jdk
  6. python征程3.1(列表,迭代,函数,dic,set,的简单应用)
  7. C++中常用到的容器
  8. javascript紧接上一张for循环的问题,我自己的理解
  9. 谷歌浏览器修改CSS和js后同步保存到文件中 (译)
  10. VC中,如何将十六进制字符串转换为十进制数?