导图社区 Python 爬虫
1、本文没有对爬虫细枝末节进行描述 2、本文没有介绍爬虫各种前置技能的具体学习 3、本文专注于对整个爬虫流程的概括和描述,适合自学爬虫时作为辅助材料 4、本文介绍了多种爬虫方法,各有优劣,需在实操中体会 5、本文没有介绍关于增量式爬虫和异步爬虫的内容 6、本文是个人学习爬虫时的总结,因此有所不严谨和粗糙的地方请见谅
编辑于2023-04-16 10:27:20 浙江省常见的神经网络模型及其应用,如感知器(Perceptron(P)),感知器模型也称为单层神经网络,这个神经网络只包含两层:输入层输出层。可能有错误的地方,请慎重参考。
准备大学思政课辩论课题时,制作的一些笔记,李鸿章的功过应当从对中国人民抗击侵略者、中国的发展的作用(当时中国的主要矛盾:侵略、清政府的无能与腐败)来说。
1、本文没有对爬虫细枝末节进行描述 2、本文没有介绍爬虫各种前置技能的具体学习 3、本文专注于对整个爬虫流程的概括和描述,适合自学爬虫时作为辅助材料 4、本文介绍了多种爬虫方法,各有优劣,需在实操中体会 5、本文没有介绍关于增量式爬虫和异步爬虫的内容 6、本文是个人学习爬虫时的总结,因此有所不严谨和粗糙的地方请见谅
社区模板帮助中心,点此进入>>
常见的神经网络模型及其应用,如感知器(Perceptron(P)),感知器模型也称为单层神经网络,这个神经网络只包含两层:输入层输出层。可能有错误的地方,请慎重参考。
准备大学思政课辩论课题时,制作的一些笔记,李鸿章的功过应当从对中国人民抗击侵略者、中国的发展的作用(当时中国的主要矛盾:侵略、清政府的无能与腐败)来说。
1、本文没有对爬虫细枝末节进行描述 2、本文没有介绍爬虫各种前置技能的具体学习 3、本文专注于对整个爬虫流程的概括和描述,适合自学爬虫时作为辅助材料 4、本文介绍了多种爬虫方法,各有优劣,需在实操中体会 5、本文没有介绍关于增量式爬虫和异步爬虫的内容 6、本文是个人学习爬虫时的总结,因此有所不严谨和粗糙的地方请见谅
Python 爬虫
学习参考文献: 1、http://c.biancheng.net/python_spider/what-is-spider.html 2、https://blog.csdn.net/weixin_45658814/article/details/117293277
爬虫的分类
1||| 通用网络爬虫
通用网络爬虫需要遵守 robots 协议,网站通过此协议告诉搜索引擎哪些页面可以抓取,哪些页面不允许抓取。
robots 协议:是一种“约定俗称”的协议,并不具备法律效力,它体现了互联网人的“契约精神”。行业从业者会自觉遵守该协议,因此它又被称为“君子协议”。
2||| 聚焦网络爬虫
爬虫是一种效率很低的程序,非常消耗计算机资源。对于聚焦爬虫程序而言,需要每天对特定的网站进行数据抓取,如果每次都去抓取之前已经抓取过的数据,就会白白消耗了时间和资源。而增量爬虫是指通过监测网站更新的情况,只抓取最新数据的一种方式,这样就大大降低了资源的消耗。
是面向特定需求的一种网络爬虫程序。它与通用爬虫的区别在于,聚焦爬虫在实施网页抓取的时候会对网页内容进行筛选和处理,尽量保证只抓取与需求相关的网页信息。聚焦网络爬虫极大地节省了硬件和网络资源,由于保存的页面数量少所以更新速度很快,这也很好地满足一些特定人群对特定领域信息的需求。
3||| 增量式网络爬虫
是指对已下载网页采取增量式更新,它是一种只爬取新产生的或者已经发生变化网页的爬虫程序,能够在一定程度上保证所爬取的页面是最新的页面。
前置技能点
1||| 编程语言
1||| Python
爬虫程序的主体语言
2||| HTML
HTML 是网页的基本结构,它相当于人体的骨骼结构。
网页的骨架
3||| CSS
CSS 表示层叠样式表,其编写方法有三种,分别是行内样式、内嵌样式和外联样式。
网页的装饰
4||| JavaScript
JavaScript 负责描述网页的行为,比如,交互的内容和各种特效都可以使用 JavaScript 来实现。
网页的行为
要求能基本看懂代码
2||| Sql语言学习
存储大量数据
3||| 正则表达式
4||| HTTP协议
5||| 了解网页的基本组成
6||| 浏览器
浏览器开发者工具
以谷歌浏览器为例(按 F12/右击网页选择检查)
实例
面板详解
爬虫的对象
1||| 静态网页
定义
静态网页是标准的 HTML 文件,通过 GET 请求方法可以直接获取,文件的扩展名是.html、.htm等,网面中可以包含文本、图像、声音、FLASH 动画、客户端脚本和其他插件程序等。
特性
1||| 静态网页的数据全部包含在 HTML 中,因此爬虫程序可以直接在 HTML 中提取数据。
2||| 通过分析静态网页的 URL,并找到 URL 查询参数的变化规律,就可以实现页面抓取。
3||| 与动态网页相比,并且静态网页对搜索引擎更加友好,有利于搜索引擎收录。
2||| 动态网页
定义
动态网页指的是采用了动态网页技术的页面
动态网页技术
AJAX(是指一种创建交互式、快速动态网页应用的网页开发技术)
ASP(是一种创建动态交互式网页并建立强大的 web 应用程序)
JSP(是 Java 语言创建动态网页的技术标准)
特性
1||| 动态页面使用“动态页面技术”与服务器进行少量的数据交换,从而实现了网页的异步加载。
2||| 网页会从服务器数据库自动加载数据并渲染页面,这是动态网页和静态网页最基本的区别。
3||| 动态网页中除了有 HTML 标记语言外,还包含了一些特定功能的代码。
这些代码使得浏览器和服务器可以交互,服务器端会根据客户端的不同请求来生成网页,其中涉及到数据库的连接、访问、查询等一系列 IO 操作,所以其响应速度略差于静态网页。
4||| 抓取动态网页的过程较为复杂,需要通过动态抓包来获取客户端与服务器交互的 JSON 数据。
爬虫流程
1||| 以html文件为对象
静态或部分静态网页
1||| 先由 urllib 模块的 request 方法打开 URL 得到网页 HTML 对象
使用requests模块比较好
1||| 重构User-Agent(用户代理)
User-Agent 即用户代理,简称“UA”,它是一个特殊字符串头。网站服务器通过识别 “UA”来确定用户所使用的操作系统版本、CPU 类型、浏览器版本等信息。而网站服务器则通过判断 UA 来给客户端发送不同的页面。
构建UA代理池
在编写爬虫程序时,一般都会构建一个 User-Agent (用户代理)池,就是把多个浏览器的 UA 信息放进列表中,然后再从中随机选择。构建用户代理池,能够避免总是使用一个 UA 来访问网站,因为短时间内总使用一个 UA 高频率访问的网站,可能会引起网站的警觉,从而封杀掉 IP。
随机获取UA
使用专门第三方的模块来随机获取浏览器 UA 信息。 pip install fake-useragent
2||| 向特定网页发送请求
对需要发送请求的网页进行编码
通过浏览器开发者工具获得 post 给 url 应该的数据格式
3||| 获取响应(response)对象
4||| 提取网站HTML信息
5||| 编码解码
2||| 使用浏览器打开网页源代码分析网页结构以及元素节点
1||| 单级页面
观察URL变化规律
2||| 多级页面
一级页面提供了获取二级页面的访问链接
多层解析
3||| 提取数据(解析html)
正则表达式(re)
BeautifulSoup
lxml(Xpath表达式)
Xpath Helper 插件
4||| 存储数据到本地磁盘或数据库
适用于网站环境简单,动态模块较少的情况 性能较好,部署较为简单
2||| 以浏览器为对象
静态和动态网页
1||| 方法一
1||| 通过Selenium打开测试浏览器(可隐藏浏览器的出现)
2||| 使用Selenium库模拟浏览器行为
3||| 通过Selenium库内置函数定位网页元素位置
4||| 通过Selenium库内置函数读取网页元素
5||| 通过Selenium库内置函数进行其他网页行为,如 鼠标点击、键盘输入等
6||| 保存数据
2||| 方法二
1||| 通过Selenium打开测试浏览器(可隐藏浏览器的出现)
2||| 使用Selenium库模拟浏览器行为
3||| 直接通过Selenium获取在浏览器上加载完全后的html文件
4||| 通过re或lxml库分析html文件
5||| 保存数据
适用于网页验证困难、环境复杂的情况,但性能较差
3||| 以网页提供的API为对象
1||| 分析获取网页API
抓包
抓包是分析请求、响应数据,以及监视 HTTP(S) 通信的常用方法,它能够帮助我们明确要请求的 URL、请求参数/参数值、Cookies,以及其他响应信息,这对于构建 POST 请求方法十分重要。
交互网页
1||| 抓取数据包
抓包流程需要一定的前端基础
浏览器抓包工具
2||| 分析
在浏览器打开数据包的url或观察preview里的内容
2||| 通过得到的API的url关键字的规律得到JSON文件
3||| 通过json库解析JSON文件
4||| 保存数据
性能最好的办法,但前提是能抓包到API,技术含量最高
4||| 以上三种方法的结合
面向对象构造爬虫程序
1||| 请求函数
请求函数最终的结果是返回一个 HTML 对象,以方便后续的函数调用它。
2||| 解析函数
解析函数用来解析 HTML 页面,常用的解析模块有正则解析模块、bs4 解析模块。通过分析页面,提取出所需的数据,在后续内容会做详细介绍。
3||| 保存数据函数
该函数负责将抓取下来的数据保至数据库中,比如 MySQL、MongoDB 等,或者将其保存为文件格式,比如 csv、txt、excel 等。
csv
Pymysql
4||| 入口函数
入口函数充当整个爬虫程序的桥梁,通过调用不同的功能函数,实现数据的最终抓取。入口函数的主要任务是组织数据,比如要搜索的贴吧名、编码 url 参数、拼接 url 地址、定义文件保存路径。
反爬
1||| 反爬监测
1||| 随机获取UA
2||| 爬虫程序随机休眠
3||| 设置代理
http://www.89ip.cn/ 免费代理
浏览器代理插件(Proxy SwitchyOmeg)
python程序使用代理
2||| 反爬验证
selenium 爬虫遇到的问题居多
1||| 滑动验证
固定缺块
1||| 定位图片缺块,获取缺块相对位置
2||| 获取滑块相对位置,求得与缺块距离
3||| 利用 selenium 模拟鼠标滑动
不固定缺块
1||| 分析网页文件,定位验证模块
2||| 分析验证模块,保存有缺块图片和无缺块图片
3||| 利用 PIL 库比较两张图片得到不同色差的区块的位置
4||| 获取滑块相对位置,求得与缺块距离
5||| 利用 selenium 模拟鼠标滑动
2||| 短信验证
短信验证托管平台
3||| 文本识别
4||| 文字定位
5||| MD5 校验
6||| 其他后端加载验证模块
chaojiying 模块
非编程爬虫
八爪鱼采集器
后羿采集器
不需要学习python很方便上手,缺点是灵活性差,性能低