爬虫基础
- 模拟客户端(浏览器)发送网络请求,获取响应,按照规则提取数据的程序
- 模拟客户端(浏览器)发送网络请求:照着浏览器发送同样的请求,获取和浏览器同样的数据
- 爬虫数据去向
- 网页或者
APP
上的呈现 - 寻找规律,进行其他的分析等
- 网页或者
浏览器请求
-
url
- 在
Chrome
中点击检查,点到network url
解码工具进行解码url
= 请求的协议(http、https
) + 网站的域名(www.baidu.com) + 资源路径 + 参数
- 在
-
浏览器请求
url
地址- 当前
url
对应的响应 +js/css
+ 图片------>elements中的内容
- 当前
-
爬虫请求
url
地址- 当前
url
对应的响应 elements
的内容和爬虫获取的url
地址的响应不同- 爬虫中需要以当前的
url
地址对应的响应的数据为准 - 当前
url
地址对应的响应在response
- 当前
HTTP/HTPPS
HTTP
超文本传输协议以明文的形式传输效率高,不安全
HTTPS
HTTP + SSL
;其中SSL
指的是安全套接字层,传输数据之前先进行加密,之后解密再获取内容
效率低,但是安全
get和post请求的区别
- get请求无请求体;post请求有;请求体就是指携带的数据
- get请求把数据放在url地址中;
- post请求常用于登录注册;post请求携带大量数据,常用于传输大文本
HTTP协议之请求
-
请求行
-
请求头
user-agent:用户代理,对方服务器能够知道当前是什么浏览器进行资源的访问
如果需要使用手机版的浏览器进行访问,把user-agent改成对应的手机版浏览器 -
cookie:用来存储用户信息,每次请求会被带上发送给对方的浏览器
(比如登录JD之后保存了cookie,下次直接登录)- 要获取登录之后才能访问的页面
- 对方的服务器会根据cookie来判断是不是爬虫
-
浏览器
- 获取登录之后才能访问的页面
- 服务器会通过cookie来判断是不是爬虫
-
请求体
- 携带数据就是请求体
- get请求无请求体,post有
-
http响应
- 响应头
set-cookie:对方服务器通过该字段设置cookie到本地 - 响应体
url地址对应的响应
- 响应头
-
模拟浏览器:带上headers即可
demo
1 | # daouban |
1 | # qiubai |
1 | # maoyan |
re模块
compile()
1 | import re |
findall()
1 | import re |
match()
match()函数:从字符串的第一个位置开始匹配;如果不是起始位置匹配成功的话,返回是None
1 | import re |
search()
1 | import re |