python爬虫之一_基本架构

本文内容来源于慕课网爬虫视频

一 python爬虫基本架构

1.1 基本架构

一个完整的爬虫程序包含以下以下四个部件:调度器、URL管理器、网页下载器、网页解析器。

  1. 调度器: 调用其他组件,并控制目标数据输出;
  2. URL管理器: 保存待爬取、已爬取URL,要防止爬取重复的URL;
  3. 网页下载器: 根据URL下载HTML页面或多媒体内容,对于动态页面要考虑执行js;
  4. 网页解析器: 解析HTML页面中的文本信息,获取目标数据和新的URL链接;
    python爬虫之一_基本架构

1.2 基本流程

python爬虫之一_基本架构

二 各组件功能

2.1 调度器

调用URL管理器、URL下载器、URL解析器,并输出数据

2.2 URL管理器

2.2.1 功能

维护待爬取集合和已爬取集合:判断得到的URL是否已爬取、将新的URL添加到待爬取集合、判断待爬取集合是否还有URL、获取待爬取URL、将URL从待爬取集合移动到已爬取集合

2.2.2 实现方法

待爬取和已爬取集合的实现方式:

  1. 内存:直接用python中set存储;
  2. 关系型数据库:用mysql存储,设置记录是否已爬取的字段;
  3. 缓存型数据库:用redis中set存储;
    python爬虫之一_基本架构

2.3 网页下载器

2.3.1 功能

模拟用户操作,发送请求接收响应,将URL对应的网页以HTML的形式下载到本地;

2.3.2 实现方法
  1. urllib3:urlopen,最简单直接提交请求;依赖于urllib3库;
  2. request:构造HTTP请求头、传数据;依赖于requests库;
  3. handler:处理Cookie、代理、HTTPS、重定向;
    python爬虫之一_基本架构

2.4 网页解析器

2.4.1 功能点

对下载到本地的HTML文件进行解析,提取目标数据、新的URL;

2.4.2 实现方法
  1. 正则表达式:将HTML文档内容视为一整个字符串,进行字符串模式匹配;
  2. 结构化解析:将HTML文档结构视为DOM树,结点涵盖HTML标签、属性、文本值三个方面,从这三个方面解析查找;依赖包:BeautifulSoup、html.paser、xpath。

python爬虫之一_基本架构