scrapy(二)

来源:互联网 发布:简单的c语言程序题目 编辑:程序博客网 时间:2024/06/07 20:29

请求与响应

请求

GET

  • Request类
  • 重要参数
    • url:目标url
    • callback:目标url对应的解析函数
    • meta:传参,,字典形式
    • headers:请求头,模拟伪装
    • dont_filter: 该请求是否被过滤器过滤
    • cookies:cookies参数
  • meta传参原理
    • Scheduler(调度器)将requests请求实例,(此实例中含有meta参数)给了下载器,Downloader(下载器)请求对应url返回responses时,会将调度器传递的参数装在response中,给了Spider类,也就实现了传参。

POST

  • FormRequest类
  • 参数
    • 同post,新增:
    • formdata:表单参数(字典格式)
  • 作用范围:
    • 模拟登陆
    • 发送post数据获取响应
  • FormRequest的from_response()方法
  • 参数
    • response
    • formdata:表单参数(字典格式)
    • callback
  • 特性:
    • 自动获取表单并将表单数据提交
  • 作用:
    • 填写表单数据

响应

  • 产生位置
    • 下载器模块
    • 下载器中间件

CrawlSpider类

介绍

  • 功能:自动提取链接并提交请求
  • 与Spider类的区别
    • CrawlSpider主要使用规则(rules)来提取链接,并自动提交请求
    • CrawlSpider类不能重写parse,因为它在parse方法中实现了自动提交请求
      • 要重新定义方法parse_start_url处理起始url对应的响应
      • parse_start_url必须返回列表
  • rules:
    • Rule对象的集合
    • 用来匹配目标网站并排除干扰
  • Rule
    • 参数:
      • linkextractor:从响应中提取链接重要
      • callback:处理链接响应方法(可写可不写),字符串形式
      • follow:定义响应中提取链接是否要跟踪
      • process_links:对提取链接进行过滤
      • process_requests:对生成请求进行过滤
    • 链接提取器LinkExtractor
      • 作用:从响应中提取链接
      • 参数:
        • allow:满足该正则的链接将会被提取
        • deny:满足该正则的链接将不会被提取
        • allowed_domains:允许的域名
        • deny_domains:禁止的域名
        • restrict_xpaths:规定的xpath节点
# 创建链接提取器le = LinkExtractor(allow=(),deny=())# 提取链接le.extract_links(response)

使用

  • 创建爬虫
    • scrapy genspider -t crawl 爬虫名 域
  • 与Spider类的区别
    • 1)导包
      • ①导入链接提取器:
        • from scrapy.linkextractors import Link Extractor
      • ②导入crawlspider类和Rule
        • from scrapy.spiders import CrawlSpider,Rule
    • 2) 类的继承使用CrawlSpider
    • 3) rules变量
    • 4)Parse方法不能重写
  • CrawlSpider爬虫开发
    • 编写rule列表,创建Rule实例
      • 注:回调函数使用字符串
    • 编写回调函数

优缺点

  • 优点
    • 适合整站爬取
    • 爬取效率高
  • 缺点:
    • 无法通过meta进行参数传递

mongodb与数据入库

mongodb

  • 见博客数据库

入库:

1.将数据库的参数写在settings文件中(参数名大写)2.在管道中使用数据库参数连接数据库3.在process_item方法中将数据写入数据库

练习:

spider与mongodb交互:github

原创粉丝点击