欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

scrapy(二)

程序员文章站 2024-03-17 15:01:22
...

请求与响应

请求

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

相关标签: 爬虫 scrapy