1.概述
1.1. 爬虫的简介
1.1.1. 浏览器访问网站工作原理
浏览器访问网页的大致工作原理可以分为以下几步:
- 我在浏览器的地址栏中输入要访问网页的url
- 浏览器就会向服务器发送HTTP请求。
- 服务器接收到浏览器发送的HTTP请求后,产生并返回HTTP响应。
- 然后浏览器获取响应(主要是html、js等), 并解析成用户所能看到的页面。
1.1.2. 什么是爬虫
爬虫就是一个自动抓取互联网信息的程序, 可以从一个URL出发访问它所关联的URL, 提取我们想要的数据。即爬虫就是自动访问互联网并提取数据的程序。
如果没有网络爬虫, 你想获取网页的数据, 只能通过人工一个一个浏览页面, 然后Ctrl+C
、 Ctrl+V
。 费力又费时。ε=(´ο`*)))唉
1.1.3. 爬虫的价值
爬虫的价值就是将网上的数据为我所用, 开发属于自己的应用程序。
1.2.简单的网络爬虫流程架构
- 爬虫调度端: 用来启动、执行、停止爬虫, 或者监事爬虫中的运行情况。
- 在爬虫程序中有三个模块
- URL管理器: 对URL进行管理, 就是将未爬取和已经爬取的URL进行管理。
- 网页下载器: 将URL管理器提供的一个URL所对应的页面下载下来,存储为字符串并传送给网页解析器进行解析。
- 网页解析器: 一方面解析出网页中有价值的信息, 另一方面解析出网页中的URL, 补充进URL管理器。
这三部分组成了一个简单的爬虫架构, 这个架构就能将互联网中所有的网页爬取下来
1.2.1. URL管理器
管理待抓取URL集合和已抓取URL集合防止重复抓取和循环抓取,最严重情况两个URL相互指向就会形成死循环。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EteD0Jpk-1589635717472)(D:\笔记图片集\1589634746270.png)]
几种实现方式
- python中的set集合
- 关系数据库, 如MySQL等
- Redis: 使用Redis性能最好, 且Redis中也有set类型可以去重。
1.2.2. 网页下载器
网页下载器:将互联网上URL对应的网页下载到本地的工具
- urlib——python标准库
- requests——第三方库(更人性化)
- 等等
1.2.3. 网页解析器
网页解析器:从网页中提取有价值数据的工具
- 正则表达式
- html.parser
- BeautifulSoup
- lxml
后面三种属于结构化解析,即DOM(Document Object Model)树
面三种属于结构化解析,即DOM(Document Object Model)树