爬虫原理
-
基本概念 : 请求网站并提取数据的自动化程序
-
基本流程
- 发起请求:通过http库向目标站点发起请求,即发送一个Request,请求中可以包含二外的headers,cookie等信息,等待服务器响应
- 获取响应内容: 如果服务器能正常响应,会得到一个Response,Response的内容便是需要获取的页面内容,类型可能为HTML,json字符串,或者二进制数据(视屏音频)等类型
-
解析内容: 根据Response返回的内容,把数据转换为想要的数据类型
-
保存数据: 把数据进行保存,保存格式随意,可为文本,或者存入数据库中
- 发起请求:通过http库向目标站点发起请求,即发送一个Request,请求中可以包含二外的headers,cookie等信息,等待服务器响应
Request和Response
-
Request: 浏览器发送消息给某个网址所在的服务器,这个过程叫做HTTP Request
-
Response: 服务器接受到浏览器发送的消息后,能根据浏览器发送的消息内容,做相应的处理,然后把消息返回给浏览器,该过程叫做HTTP Response
-
Request中包含的内容有哪些?
-
请求方式: 主要有GET,POST,两种类型,另外还有PUT、DELETE、HEAD、OPTIONS等
-
请求URL : 统一资源定位符,就是常说的网址(实际上的网址并不仅仅是url)
-
请求头 : 包含请求时的头部信息,如User-Agent,Host,Cookies等信息
-
请求体 : 请求时额外携带的数据,如表单提交时的表单数据
-
-
Response中包含的内容
- 响应状态 : 常见的如200(成功), 301(跳转) , 404(找不到网页), 502(服务器错误)等
-
响应头: 如内容类型,内容长度,服务器信息,设置cookie等等(可在页面中点击右键,找到检查元素,查看network)
-
响应体 : 最主要的部分, 包含请求资源的内容
抓取数据和解析
-
可以抓取的数据有:
- 视频音频
- 图片(当然,爬取美女图片啊之类的,就更不是问题了,嘿嘿)
- 其他请求的数据
-
解析数据的方法
- 直接处理数据
- json解析
- 正则表达式(性能最高,但有时候较复杂,不推荐使用)
- BeautifulSoup(须安装第三方库BeautifulSoup4,安装直接使用pip install BeautifulSoup4即可)
- 使用xpath语法进行解析(语法简单,性能较好,推荐使用)
-
正则 xpath bs4 的对比
re xpath bs4 安装 内置模块 pip install lxml pip install BeautifulSoup4 语法 正则 路径匹配 面向对象,可使用HTML中的选择器(标签,CSS等等) 使用 困难 较困难 简单 性能 最高 适中 最低
解决某些页面是通过ajax渲染而成的情况: 分析ajax请求 ; Selenium/WebDriver; Splash等**