Scrapy框架初步了解

了解Scrapy框架常用组件

  • ENGINE:引擎,框架核心,协同各个组件
  • SCHEDULER:调度器,调度SPIDER提交的下载请求,按某种算法使Request对象排队
  • DOWNLOADER:下载器,负责下载页面(发送HTTP Request/接收 HTTP Response)
  • SPIDER:爬虫,用户实现,实现爬虫逻辑
  • MIDDLEWARE(可选):负责对Request和Response进行处理
  • ITEM PIPELINE(可选):数据管道,负责对爬取到的数据进行处理

实现SPIDER

  1. 继承scrapy.Spider
  2. 给Spider起名
  3. 自定义start_requests方法(可省略)
  4. 设置起始爬取点
  5. 实现页面解析函数

Request和Response对象

Requset对象

1
2
3
4
5
6
# Request源码
class Request(object_ref):
# 除了url,其他都有默认值
def __init__(self, url, callback=None, method='GET', headers=None, body=None,
cookies=None, meta=None, encoding='utf-8', priority=0,
dont_filter=False, errback=None, flags=None):

解析构造器参数:

  • url(必选)

    请求页面的url地址,bytes或str类型

  • callback(常用)

    页面解析函数,默认调用Spider的parse方法

  • method

    HTTP请求方法,默认为GET

  • headers

    HTTP请求的头部字典,如果其中某项值为None,则表示不发送该项HTTP头部

  • body

    HTTP请求正文

  • cookies

    Cookie信息字典

  • meta

    Request的元数据字典,用于给框架中其他组件传递信息

  • encoding

    编码类型,默认'UTF-8'

  • priority

    请求的优先级,默认为0,优先级高的优先下载

  • dont_filter

    默认为False,表示对与同一个URL的多次提交下载请求,后面的请求会被过滤掉(避免重复下载) 设置为True,则表示强制执行所有下载请求

  • errback

    请求出现异常或者出现HTTP错误时(如404)的回调函数

  • flags

    是一个包含属性初始值的Response.flags列表,如果给定,列表将被浅复制。

Response对象

最常用的三个方法:

  • xpath(query)

    使用XPath选择器在Response中提取数据

  • css(query)

    使用CSS选择器在Response中提取数据

  • urljoin(url)

    用于构造绝对URL,例如:

1
2
3
4
5
response.url = www.example.com/a
url = b/index.html
response.urljoin(url)
-------------------------------结果
www.example.com/a/b/index.html

页面解析函数

默认为parse方法

页面解析需要完成的工作:

  • 使用选择器提取页面数据,将其封装成item或字典提交给引擎
  • 使用选择器或LinkExtractor提取页面中的链接,用其构造成新的Request对象并提交给引擎

页面解析函数被要求返回一个可迭代对象(一般为生成器函数),每次迭代返回一项数据或一个Requset对象

赏个🍗吧
0%