目录
1. 爬虫基础简介
2. requests模块基础
3. 数据解析
4. 验证码识别
本文代码在https://github.com/2765776613/Spider
1. 爬虫基础简介
- 什么是爬虫:
- 通过编写程序,模拟浏览器上网,然后让其去互联网上抓取数据的过程
- 爬虫的价值:
- 实际应用
- 就业
- 爬虫究竟是合法还是违法的?
- 在法律中是不被禁止的
- 具有违法风险
- 善意爬虫 恶意爬虫
- 爬虫带来的风险可以体现在如下2个方面:
- 爬虫干扰了被访问网站的正常运营
- 爬虫抓取了受到法律保护的特定类型的数据或信息
- 如何在编写爬虫的过程中避免进入局子的厄运呢?
- 时常优化自己的程序,避免干扰被访问网站的正常运行
- 在使用,传播爬取到的数据时,审查抓取到的内容,如果发现了涉及到用户信息 商业机密等敏感内容需要及时停止爬取或传播
- 爬虫在使用场景中的分类:
- 通用爬虫:
- 抓取系统重要组成部分。抓取的是一整张页面数据
-
聚焦爬虫:
- 是建立在通用爬虫的基础之上。抓取的是页面中特定的局部内容
- 增量式爬虫:
- 监测网站中数据更新的情况。只会爬取网站中最新更新出来的数据
- 通用爬虫:
- 反爬机制:
- 门户网站,可以通过制定相应的策略或者技术手段,防止爬虫程序进行网站数据的爬取。
- 反反爬策略:
- 爬虫程序也可以制定相关的策略或者技术手段,破解门户网站中具备的反爬机制,从而可以获取门户网站中相关的数据
- robots.txt协议:
- 君子协议,明确规定了网站中哪些数据可以被爬虫爬取,哪些数据不可以被爬取
- http协议:
- 概念:就是服务器和客户端进行数据交互的一种形式。
- 常用请求头信息:
- User-Agent:请求载体(浏览器)的身份标识
- Connection:请求完毕后,是断开连接还是保持连接
- 常用响应头信息:
- Content-Type:服务器响应回客户端的数据类型
- https协议:
- 安全的超文本传输协议
- 加密方式:
- 对称秘钥加密
- 非对称秘钥加密
- 证书秘钥加密
2. requests模块基础
-
requests模块:python中原生的一款基于网络请求的模块,功能非常强大,简单便捷,效率极高
-
作用:模拟浏览器发请求
-
如何使用?(requests模块的编码流程)
- 指定url
- 发起请求
- 获取响应数据
- 持久化存储
-
实战编码:
spider/01requests第一血.py
-
实战巩固: 5个案例非常重要
3. 数据解析
-
数据解析分类:
- 正则
- bs4
- xpath(***)
-
数据解析原理概述:
解析的局部的文本内容都会在标签之间或者标签对应的属性中进行存储
- 进行指定标签的定位
- 标签或者标签对应的属性中存储的数据值进行提取(解析)
-
xpath:
最常用且最便捷高效的一种解析方式
- xpath解析原理:
- 实例化一个etree的对象,且需要将被解析的页面源码数据加载到该对象中
- 调用etree对象中的xpath方法结合着xpath表达式实现标签的定位和内容的捕获
- 如何实例化一个etree对象:
from lxml import etree
- 将本地的html文档中的源码数据加载到etree对象中:
etree.parse(filePath, etree.HTMLParser())
- 可以将从互联网上获取的源码数据加载该对象中:
etree.HTML(page_text)
- 将本地的html文档中的源码数据加载到etree对象中:
-
xpath表达式:
- / :表示从根节点开始定位。表示的是一个层级
- // :表示的是多个层级。可以表示从任意位置开始定位
- 属性定位:
//div[@class='song']
tag[@attrName=‘attrValue’] - 索引定位:
//div[@class='song']/p[3]
索引是从1开始的 - 取文本:
- /text():获取的是标签中直系的文本内容
- //text():标签中非直系的文本内容(所有的文本内容)
- 取属性:
- /@attrName
- xpath解析原理:
4. 验证码识别
- 识别验证码的操作:
- 人工肉眼识别。(不推荐)
- 第三方自动识别。(推荐)
- 云打码(已封~)
- 注册:普通和开发者用户
- 登录:
- 普通用户的登录:查询该用户是否还有剩余的题分
- 开发者用户的登录:
- 创建一个软件:我的软件 -》 添加新软件 -》录入软件名称 -》提交 (软件id和秘钥)
- 下载示例代码:开发文档 -》点击下载:云打码接口DLL -》PythonHTPP示例下载
- 快识图片识别平台
- 云打码(已封~)