Scrapy框架
分类:
文章
•
2024-10-02 07:57:04
Scrapy框架结构及各模块功能
框架结构

模块功能
- Scrapy Engine(引擎):
- Spiders(爬虫类):
- 发起起始的请求,返回request给Scheduler
- 定义如何爬取一个网站,获取数据
- Scheduler(调度器):
- 接收引擎发过来的request请求,压入队列
- 引擎需要时,取出request请求,返回给引擎
- Downloader(下载器):
- ItemPipeline(管道):
Scrapy框架爬虫开发流程
流程:
- 分析目标站点,测试反爬
- 创建项目:scrapy startproject <项目名>
- 明确目标
- 创建爬虫:scrapy genspider <爬虫名> <域名>
- 保存
创建项目
- scrapy startproject <项目名>
- 目录说明:
- myspider:存放项目代码
- items.py : 建模
- pipelines.py:决定数据后续处理
- settings.py:项目设置文件
- spiders:存放创建的爬虫文件
- scrapy.cfg:远程部署配置文件
明确目标
创建爬虫
- scrapy genspider name domain
- name:唯一,不能和项目名重名
- domain:爬虫允许域名,进行过滤
运行爬虫
保存内容
- 编写pipeines管道文件
- process_item()函数:定义数据操作
- spider文件中以yeild方式将数据返回
- open_spider和close_spider用于爬虫开始和结束做相关处理
Scrapy shell调试
- 调试方法:
- 启动:scrapy shell <目标网站>:url地址需含双引号
- 查看响应
- response.body:响应源码
- response.headers:响应头
- response.url:请求的url
- response.status:状态码
- 调试xpath、css
- response.selector.xpath()
- response.selector.css()
- 可简写去掉selector:如:response.css()
- 防止被绊
- 加载用户头启动
- scrapy shell -s USER_AGENT=‘Mozilla/5.0’
fetch(url)
- 用浏览器查看获取响应
Scrapy Spider类
- 实现功能
- 重要源码
-
init:初始化name和start_urls
- start_requests
- for url in self.start_urls
- 请求url,传给make_requests_from_url
- 接收make_requests_from_url返回的request
- make_requests_from_url
- parse
- scrapy中xpath使用区别
- 需要使用extract()方法将数据字符串化
- 一般使用extract_first():若没有返回None