博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
爬虫基本原理讲解(二)
阅读量:3953 次
发布时间:2019-05-24

本文共 1401 字,大约阅读时间需要 4 分钟。

爬虫基本流程

爬虫的定义:请求网站并提取数据的自动化程序

在这里插入图片描述

1.发起请求

通过HTTP库向目标站点发起请求,即发送一个Request,请求可以包含额外的headers等信息,等待服务器相应

2.获取相应内容

若服务器能正常相应,会得到一个Response,response的内容便是所要获取的页面内容,类型可能有HTML,json字符串,二进制数据(图片视频)等类型

3.解析内容

HTML,可以用正则表达式,网页解析库进行解析

json,直接转为json对象解析

二进制数据,保存或进一步的处理

4.保存数据

可以存为文本,也可以保存至数据库,或者保存特定格式的文件

Request&Response

(1)浏览器发送消息给该网址所在的服务器(HTTP Request)

(2)服务器收到消息后,根据浏览器发送消息的内容,做相应处理,然后把消息回传给服务器(HTTP Responce)

(3)浏览器收到服务器的Responce信息后,会对信息进行相应处理,然后展示

在这里插入图片描述
在这里插入图片描述

put请求的参数会包含在url中,而post则不会

Request中包含什么

1.请求方式

GET POST

HEAD PUT DELETE OPTIONS

在这里插入图片描述

GET与POST差别 GET POST
请求信息 请求信息在链接中 请求信息包含在Form Data
构建请求方式 输入URL回车直接访问 通过构造表单点击表单提交

2.请求URL(统一资源定位符)

如一个网页文档,一张图片,一个视频都可以用URL唯一来确定

3.请求头(请求的配置信息)

包含请求时的头部信息

在这里插入图片描述

cookie:保持登录会话
User-Agent:指定浏览器请求头

告诉服务器请求的文档类型,携带的cookie,浏览器配置,服务器判断信息是否合法,根据解析结果返回相应的文件内容,爬虫一般加上Request Headers以保证请求正常运行

4.请求体

请求时额外携带的数据

在POST请求方式中的Form Data中

Response中包含什么

在这里插入图片描述

响应体就是源代码.先得到文件的类型,就是源代码,然后在继续请求内置的各种链接,一般都是图片啊,视频之类的.

1.响应状态

200:正常

300以上:跳转

500以上:服务器处理错误

2.响应头

内容类型,内容长度,服务器信息,设置cooike等

3.响应体

包含请求资源的内容,如网页HTML,图片二进制数据等

能抓怎样的数据

在这里插入图片描述

网页文本 HTML文档,Json格式文本等

图片 获取到的是二进制流,将二进制文件保存为图片格式

with open('文件名','wb') as f:            f.write(二进制流)

视频 同图片为二进制数据

其他 能请求到的都能获取

解析方式

在这里插入图片描述

1.直接处理

2.Json解析

3.正则表达式

4.BeautifulSoup

5.PyQuery

6.XPath

为什么我们抓到的数据和浏览器中看到的不一样呢?

用库得到的是网页的源代码,而浏览器(elements)中,显示的是经过js渲染的
怎样解决JavaScript渲染的问题?

在这里插入图片描述

保存数据

1.文本 纯文本,JSon,Xml等

2.关系型数据库 如MySQL,Oracle,SQL Sever等具有结构化表结构形式存储

3.非关系型数据库 如MongoDB,Redis等Key-Value形式存储

4.二进制文件

在这里插入图片描述

转载地址:http://fcuzi.baihongyu.com/

你可能感兴趣的文章
iOS--Masonry解决 tableViewCell 重用时约束冲突
查看>>
git 与 svn 的主要区别!
查看>>
iOS-截屏,从相册选择图片,制作磨砂效果图片
查看>>
iOS-截取字符串中两个指定字符串中间的字符串
查看>>
数据库-数据库操作(使用FMDB)
查看>>
FMDB介绍以及在 swift 中的数据库操作
查看>>
iOS运行时机制(附Demo演练)
查看>>
宽字符串输出问题
查看>>
将整数转换为宽字符串
查看>>
在类中定义enum实现整数常量功能
查看>>
suse11通过安装最新内核可以上网的经验
查看>>
SUSE静态配置IP成功上网
查看>>
通过sleep让程序等待外部条件改变
查看>>
通过等待键盘输入让程序等待外部条件改变
查看>>
通过限制循环次数来避免死循环
查看>>
ADO连接字符串
查看>>
字符数组的位置决定程序能否成功执行--不明白
查看>>
拷贝代码时没有仔细检查,导致误修改了函数参数
查看>>
MySQL批量导入数据SQL语句(CSV数据文件格式)
查看>>
ADO连接Oracle
查看>>