爬虫
使用代码模拟用户,批量发送网络请求,批量获取数据
书籍推荐
http和https图解
http的请求方式
post:
新增数据
上传大型数据量,数据整体没有限制(取决于服务器性能)
比较安全,不是明文的
可以上传文件
get:
查询数据
不安全,明文显示,搜索的东西出现在地址栏里
参数的长度有限,上传小型数据
比较便捷
head:
返回请求头的信息
put:修改数据
delete:删除信息
网络请求:需要带一定的数据(参数)给服务器(一般情况下)
参数储存在请求头request header里
返回响应头response
request headers
accept:text/html(返回数据的格式:文本格式或者网页格式)
accept-encoding(编码格式):gzip(可压缩的,加快传输速度)
accept-language:zh-CN(中文格式)
Connection(一般情况下是短链接,长链接需要一直和服务器保持联系):keep-alive
cookie:缓存,验证用的
host:域名
referer:从哪个网页跳转过来的
user-agent:浏览器和用户电脑的信息
response headers
cache-control:返回数据的大小
connection:长链接、短链接
content-encoding:gzip返回压缩文件
content-type:text/html;charset=utf-8
date:发送网络请求的时间,差八个小时
expires:返回请求结束时间
server:服务器信息
set-cookie:缓存设置
状态码:200,400,500,404
浏览器的ip地址,目标网页域名(服务器)➡️搜索➡️dns:域名解析服务商➡️返回目标网页(服务器)的ip地址➡️访问服务器的数据库查询数据
遵守http超文本传输协议
爬虫的价值
数据中心,工商数据(买卖数据),数据分析报告,流量,排行榜,指数(阿里、百度)
爬虫的分类
通用爬虫:
使用搜索引擎:开放性、速度快,但是返回目标不明确,返回内容90%是用户不需要的,不清楚用户的需求在哪里
聚焦爬虫:
目标明确,对用户需求精准,返回内容固定
增量式:有翻页功能(第一页请求到最后一页)
深度爬虫:
静态数据(浏览器html、css架构),动态数据(更新文章,更换头像,js、加密的js代码)
robots协议:是否允许其他爬虫(通用爬虫)爬取内容,但是没有用,只能限制浏览器搜索,我们一般用的是聚焦爬虫,不遵守robots。
爬虫工作原理
1.确认抓取目标的url
2.使用python代码发送请求获取数据
3.解析获取到的数据
(1)寻找新的目标url,回到第一步(自动化过程)
数据持久化(第三方模块)
python原生提供的模块:
python3:urllib.request
(1)urllopen:
返回response对象
bytes转换成str:decode(“utf-8”)
str转换成bytes:encode(“utf-8”)
(2)get传参:
汉字报错:解释器ascii码不支持中文
(3)post
(4)handle处理器的自定义
(5)urlError
python2:urlib2
request(第三方)
数据解析:Xpath bs4
数据存储
