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方法不能重写
- 1)导包
- CrawlSpider爬虫开发
- 编写rule列表,创建Rule实例
- 注:回调函数使用字符串
- 编写回调函数
- 编写rule列表,创建Rule实例
优缺点
- 优点
- 适合整站爬取
- 爬取效率高
- 缺点:
- 无法通过meta进行参数传递
mongodb与数据入库
mongodb
- 见博客数据库
入库:
1.将数据库的参数写在settings文件中(参数名大写)
2.在管道中使用数据库参数连接数据库
3.在process_item方法中将数据写入数据库
练习:
上一篇: 字符串与ASCII的转换
下一篇: 二.scrapy框架调试