爬虫基本原理和概念
目录
爬虫基本流程
1.发起请求
通过HTTP库向目标站点发起请求,即发送一个Request,请求可以包含额外的headers等信息,等待服务器相应
2.获取相应内容
若服务器能正常相应,会得到一个Response,response的内容便是所要获取的页面内容,类型可能有HTML,json字符串,二进制数据(图片视频)等类型
3.解析内容
HTML,可以用正则表达式,网页解析库进行解析
json,直接转为json对象解析
二进制数据,保存或进一步的处理
4.保存数据
可以存为文本,也可以保存至数据库,或者保存特定格式的文件
Request&Response
(1)浏览器发送消息给该网址所在的服务器(HTTP Request)
(2)服务器收到消息后,根据浏览器发送消息的内容,做相应处理,然后把消息回传给服务器(HTTP Responce)
(3)浏览器收到服务器的Responce信息后,会对信息进行相应处理,然后展示
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
保存数据
1.文本 纯文本,JSon,Xml等
2.关系型数据库 如MySQL,Oracle,SQL Sever等具有结构化表结构形式存储
3.非关系型数据库 如MongoDB,Redis等Key-Value形式存储
4.二进制文件