Python爬虫学习日志(9)

Scrapy爬虫框架

  • Scrapy不是一个函数功能库而是一个爬虫框架
    • 1.Scrapy爬虫框架结构
          • “5+2”结构
    • 2.Scrapy爬虫框架解析
          • 不需修改的部分
          • Downloader Middleware(中间键)
          • 用户编写的部分
          • Spider Middleware(中间键)
    • 3.requests库和Scrapy爬虫的比较
    • 4.Scrapy爬虫的常用命令行
    • 5.Scrapy爬虫的一个实例
          • 步骤:
          • 命令行中输入:
          • yield关键字的使用
    • 6.Scrapy爬虫的基本使用

Scrapy不是一个函数功能库而是一个爬虫框架

1.Scrapy爬虫框架结构

  1. 爬虫框架
  • 爬虫框架是实现爬虫功能的一个软件结构功能组件集合。
  • 爬虫框架是一个半成品,能够帮助用户实现专业网络爬虫。
“5+2”结构

Python爬虫学习日志(9)_第1张图片

Python爬虫学习日志(9)_第2张图片

Python爬虫学习日志(9)_第3张图片

Python爬虫学习日志(9)_第4张图片

Python爬虫学习日志(9)_第5张图片

2.Scrapy爬虫框架解析

不需修改的部分

Python爬虫学习日志(9)_第6张图片

Downloader Middleware(中间键)
  • 目的:实施Engine、Scheduler和Downloader之间进行用户可配置的控制
  • 功能:修改、丢弃、新增请求或响应
    用户可以编写配置代码
用户编写的部分

Python爬虫学习日志(9)_第7张图片

Spider Middleware(中间键)
  • 目的:对请求和爬取项的再处理
  • 功能:修改、丢弃、新增请求或爬取项
    用户可以编写配置代码

3.requests库和Scrapy爬虫的比较

Python爬虫学习日志(9)_第8张图片
Python爬虫学习日志(9)_第9张图片
选取爬虫的依据:

  • 非常小的需求,requests库。
  • 不太小的需求,Scrapy框架。
  • 定制程度很高的需求(不考虑规模),自搭框架,requests>Scrapy.

4.Scrapy爬虫的常用命令行

Python爬虫学习日志(9)_第10张图片

Python爬虫学习日志(9)_第11张图片
Python爬虫学习日志(9)_第12张图片

5.Scrapy爬虫的一个实例

demo网页 http://python123.io/ws/demo.html

步骤:
  1. 建立一个Scrapy爬虫工程
  2. 在工程中产生一个Scrapy爬虫
  3. 配置产生的spider爬虫
命令行中输入:

1) 建立工程:> scrapy startproject python123demo
2)生成爬虫(也可以手动生成) >cd python123demo;
>scrapy genspider demo python123.io

Python爬虫学习日志(9)_第13张图片

Python爬虫学习日志(9)_第14张图片
Python爬虫学习日志(9)_第15张图片

Python爬虫学习日志(9)_第16张图片

yield关键字的使用

Python爬虫学习日志(9)_第17张图片
生成器相比一次列出所有内容的优势

  • 更节省存储空间
  • 响应更迅速
  • 使用更灵活
#生成器
def gen(n):
    for i in range(n):
        yield i**2

for i in gen(5):
    print(i, " ",end="")#关键字end可以用于将结果输出到同一行,或者在输出的末尾添加不同的字符,此处为空格
    
#普通写法
def square(n):
    ls = [i**2 for i in range(n)]
    return ls

for i in square(5):
    print(i, " ", end="")

输出结果:

0  1  4  9  16  0  1  4  9  16  
  • yield 生成器每次只返回一个值进行操作,而普通写法需要返回全部值,当数值较大时,占用大量存储空间。

6.Scrapy爬虫的基本使用

Python爬虫学习日志(9)_第18张图片

Python爬虫学习日志(9)_第19张图片

Python爬虫学习日志(9)_第20张图片

Python爬虫学习日志(9)_第21张图片

Python爬虫学习日志(9)_第22张图片

Python爬虫学习日志(9)_第23张图片

Python爬虫学习日志(9)_第24张图片

Python爬虫学习日志(9)_第25张图片

你可能感兴趣的:(Python爬虫基础教程)