概述和储备
-
通俗定义:模拟浏览器(使数据可视化)行为抓取网页数据的技术
-
技术定义:通过程序规则对互联网数据进行解析和存储
-
工作原理:
- 替代浏览器向服务器发起请求
- 直接获取HTML等原始数据
- 不进行页面渲染,专注数据提取
-
爬虫流程示例
- 基本流程:
- 准备目标URL列表(地址URL)
- 发送HTTP请求获取响应
- 解析响应内容
- 提取新URL(翻页/详情)---配置的参数在改变
- 提取目标数据(封装处理)
- 数据存储
- 关键环节:翻页参数处理是保证数据完整性的重要技术点
- 基本流程:
-
知识储备
前端(HTML、CSS、JavaScript)小白教程#HTML 教程 <#了解HTML属性、元素、标题等>
案例:#豆瓣电影排行榜 <#查看页面源代码> -
浏览器运行完整流程:
- DNS解析获取服务器IP
- 检查浏览器缓存(强缓存/协商缓存)
- 与Web服务器建立TCP连接
- 建立TCP连接(三次握手)
- 获取HTML数据
- 服务器响应HTML
- 浏览器解析渲染(注:通过对结构的解析来抓取数据)
- 执行JS脚本
- 发起网络请求(如AJAX)
- 响应ajax请求
- 重点环节:理解从URL输入到页面渲染的完整链路
-
urllib库
用于操作网页URL,并对网页的内容进行抓取处理 -
urllib模块 Example
urllib.request---打开(urlopen方法)和读取URL
urllib.error---包含urllib.request抛出的异常
urllib.parse---解析URL
urllib,robotparser---解析robots.txt文件
- read() 函数获取网页的HTML实体代码,加入参数控制长度
- readline() - 读取文件的一行内容
- readlines() - 读取文件的全部内容
<#浏览器> - 可以对服务器返回的HTML数据进行解析从而在界面中呈现
from urllib.request import urlopen
#urllib相关与URL处理的包管理器
url = ""
con = urlopen(url)
print('--------')
print(con.read)
f = open('test.html','wb')
f.write(cons)
f.close()
print(cons.decode{'utf-8'})
open
核心:创建一个file对象 python的I/O
open(name[,model[,buffering]])
使用方式直接向上:
1.关于name:想访问的文件名
2.mode:决定打开的模式
mode-->w:只用与写入,如果文件存在,则直接打开,并从头进行编辑,进行原覆盖(删了重来),如果没有这个文件,他就会创建一个新的
mode-->wb:以二进制格式打开(一般用于非文本文件)
urllib主要作用:操作网页URL
urllib.request.urlopen{url,data=None,[]}