这里我们学习聚焦网络爬虫
针对特定网页的爬虫 也叫主题网络爬虫,爬取的 目标网页定位在与主题相关的页面中 ,主要为某一类特定的人群提供服务, 可以节省大量的服务器资源和带宽资源。聚焦爬虫在实施网页抓取时会对内容进行处理筛选,尽量保证 只抓取与需求相关的网页信息。 比如要获取某一垂直领域的数据或有明确的检索需求,此时需要过滤掉一些无用的信息。 例如:那些比较价格的网站,就是爬取的其他网站的商品。
聚焦爬虫流程
- 第一步:start_url 发送请求
- 第二步:获取响应(response)
- 第三步:解析响应,若响应中有需要的新的url地址,重复第二步;
- 第四步:提取数据
- 第五步:保存数据 通常,我们会把获取响应,解析放在一个步骤中完成,
- 所以说,聚焦爬虫的步骤,通俗的来讲一共四步
学习爬虫首先了解http/https协议
http与https协议
-
介绍 HTTP协议:HTTP 协议(HyperText Transfer Protocol)超文本传输协议 HTTP协议规定了浏览器和 Web 服务器通信数据的格式,即 应用于web服务端与浏览器客户端之间 通信的协议,是目前互联网应用最为广泛的一种协议,目前的主流版本是http1.1
-
HTTPS协议: https是以安全为目标的Http协议,可以理解为HTTP的安全版,即http中加入了ssl层,其传输的内容 都是经过ssl加密的
requests介绍
- 首先下载requests第三方库 pip install requests
- 在pycharm中导入
- requests.url#获取当前路径
- requests.text#获取文本
- requests.encoding #编码
- requests.json #json数据
- requests.status.code#获取状态码
- requests.cookie #返回cookie
- requests.history#返回会响应历史
import requests
url = "https://www.baidu.com" #指定爬取的url路径
respone=requests.get(url)#requests.get获取到url
print(response.text)#打印响应体html
URL介绍
url概念
URL(Uniform Resoure Locator) : 统一资源定位器,是对网络资源地址的描述,俗称网址
url写法
http://www.gdrtvu.edu.cn/xxgk1/xxjj.htm
http://www.gdrtvu.edu.cn:80/xxgk1/xxjj.htm
http://www.gdrtvu.edu.cn/img/banner3.jpg
https://www.baidu.com/index.html
http://14.215.177.39/
https://search.jd.com/Search?keyword=小米&enc=utf-8&&pvid=a2607588
file:///C:/Users/lijun/Desktop/demo/fool.html
url组成
- 协议部分: https://、http:// 、ftp://、file://
- 主机部分: 域名或ip地址, www.gdrtvu.edu.cn 、 search.jd.com 、 14.215.177.39
- 端口部分: 80、4000、443、8080
- 资源路径部分: /xxgk1/xxjj.htm , /img/banner3.jpg
- 查询参数部分[可选]: ?keyword=小米&enc=utf-8&pvid=a2607588
- 参数部分从 ? 开始, 每一个参数 key=value 的形式 , 参数与参数用 & 隔开
http请求报文
http://www.gdrtvu.edu.cn/xxgk1/xxjj.htm
由四部分组成,分别为:
- 请求行 [请求方式 请求路径 协议版本\r\n]
- 请求头 [头名称: 头值\r\n]
- 空行 [请求头与请求体的分割线 \r\n]
- 请求体 [只有post方式有请求体]
http响应报文格式
由四部分组成,分别为:
- 响应行[协议版本 状态码 状态描述\r\n]
- 响应头[头名称: 头值\r\n]
- 空行 [响应头与响应体的分割线\r\n]
- 响应体[响应给客户端的具体数据]
HTTP常见请求头和响应头
请求头:
- Host (主机和端口号)
- Connection (连接类型)
- Upgrade-Insecure-Requests (是否升级为HTTPS请求)
- User-Agent (用户代理/浏览器名称)
- Accept (客户端可接收的文件类型)
- Referer (页面跳转处)
- Cookie (用户行为状态)
响应头:
- Set-Cookie (服务器设置cookie到用户浏览器的缓存)
- Server(服务器名称)
get与post 请求方式
- get侧重从服务器上获取资源,post侧重向服务器发送数据,get请求是默认的请求方式
- get请求参数的传输是附在URL后,并用"?"连接,多个请求数据间用"&"连 http://127.0.0.1/Test/login.action?name=admin&password=admin
- post请求参数的传输是通过 HTTP的 post机制,将参数名与对应值封存在请求体中发送给服务端 account=12&pwd=34&age=20
- Get传输的数据量小,因为受URL长度限制,Post可以传输大量数据,所以上传文件时只能用Post 方式
- get 安全性没有post好,因为get传参是拼接在url后面,是可见的, 而post传输是封装在请求体 中, 是不可见的
http响应状态码
HTTP 状态码是用于表示web服务器响应状态的数字代码
- 状态码 说明
- 200 请求成功
- 307 重定向
- 404 请求资源在服务器不存在
- 500 服务器内部源代码出现错误
网页基础知识
- 网页的组成 html :
- 负责内容 css :负责样式,是对内容的修饰
- javascript:负责行为和交互
DOM文档结构模型
在网页中,组织页面的对象被渲染程一个树形结构,用来表示文档中对象的标准模型,称为文档对象 模型(DOM)
DOM规定:
- 整个文档是一个文档节点, 每一个HTML标签 是一个元素节点, 元素里面包含多个属性,元素之间可 包含文本,
- 节点树中的节点包含层级关系,比如父、子、兄弟等关系, 父节点拥有子节点, 同级的子节点被称为 兄弟节点或者姐妹节点
- 节点树中, 顶端节点被称为根
- 每个节点都有父节点,除了根
- 一个节点可拥有任意数量的子节点
- 兄弟是拥有相同父节点的节点