python爬虫之一_基本架构
本文内容来源于慕课网爬虫视频
一 python爬虫基本架构
1.1 基本架构
一个完整的爬虫程序包含以下以下四个部件:调度器、URL管理器、网页下载器、网页解析器。
- 调度器: 调用其他组件,并控制目标数据输出;
- URL管理器: 保存待爬取、已爬取URL,要防止爬取重复的URL;
- 网页下载器: 根据URL下载HTML页面或多媒体内容,对于动态页面要考虑执行js;
-
网页解析器: 解析HTML页面中的文本信息,获取目标数据和新的URL链接;
1.2 基本流程
二 各组件功能
2.1 调度器
调用URL管理器、URL下载器、URL解析器,并输出数据
2.2 URL管理器
2.2.1 功能
维护待爬取集合和已爬取集合:判断得到的URL是否已爬取、将新的URL添加到待爬取集合、判断待爬取集合是否还有URL、获取待爬取URL、将URL从待爬取集合移动到已爬取集合
2.2.2 实现方法
待爬取和已爬取集合的实现方式:
- 内存:直接用python中set存储;
- 关系型数据库:用mysql存储,设置记录是否已爬取的字段;
- 缓存型数据库:用redis中set存储;
2.3 网页下载器
2.3.1 功能
模拟用户操作,发送请求接收响应,将URL对应的网页以HTML的形式下载到本地;
2.3.2 实现方法
- urllib3:urlopen,最简单直接提交请求;依赖于urllib3库;
- request:构造HTTP请求头、传数据;依赖于requests库;
- handler:处理Cookie、代理、HTTPS、重定向;
2.4 网页解析器
2.4.1 功能点
对下载到本地的HTML文件进行解析,提取目标数据、新的URL;
2.4.2 实现方法
- 正则表达式:将HTML文档内容视为一整个字符串,进行字符串模式匹配;
- 结构化解析:将HTML文档结构视为DOM树,结点涵盖HTML标签、属性、文本值三个方面,从这三个方面解析查找;依赖包:BeautifulSoup、html.paser、xpath。