文章目录
一、基础知识
1、定义
是自动获取互联网信息的程序,用来对互联网信息进行分析、开发产品。
2、基本架构
URL管理模块:对计划爬取或已经爬取的URL进行管理(已爬取不再爬取,未爬取则爬取,已失效网站检测等)
网页下载模块:将URL管理模块中指定的URL进行访问下载
网页解析模块:解析网页下载模块中的URL,处理或保存数据;若解析到需要继续爬取的URL,则返回URL管理模块继续循环。
上图介绍了爬虫的流程,是学习本节的基础。
二、URL管理模块
防止重复爬取和循环指向
功能:
- 可以添加新的URL
- 管理已经爬取和未爬取的URL
- 获取待爬取的URL
实现方式:
- Python的set集合数据结构(使用了集合中数据的唯一性,适用于数据简单情况)
- 数据库中的数据表(创建的时候打标签,标记flag位)
三、网页下载模块
将URL对应的网页下载到本地或读入内存(字符串)
Python中的requests模块
request.get(url) 返回request对象,通过request对象的方法获取想要的信息
属性:
status_codes:状态码
常见的状态码:
- 200:请求成功
404:请求的资源不存在
500:内部服务器错误
headers:网页的header信息
encoding:网页编码
text:请求返回的文本信息
content: 以字节形式的非文本信息(图片等)
# 使用jupyter notebook
import requests
url = "https://www.baidu.com"
r_obj = requests.get(url)
r_obj.status_code # 返回状态码
r_obj.encoding = 'utf-8' # 若返回text时出现乱码则先将编码设置为utf-8格式再返回文本
r_obj.text
四、网页解析模块
从已下载网页中解析所需内容
实现方式:
- 字符串匹配 <