爬虫的概念
爬虫就是:模拟浏览器发送网络数据,获取请求响应
爬虫的流程
url—>发送请求,获取响应—>提取数据—>保存获取响应—>提取url地址,继续请求
浏览器的请求过程
浏览器获取数据包含:url地址对应的响应+js+css+jpg
爬虫会获取:url地址对应的响应
爬虫获取的内容和elements内容不一样,进行数据提取的时候,需要根据url地址对应的响应为准
url的形式
url的形式:scheme://host[:port#]/path/…/[?query-string][#anchor]
- scheme:协议(例如:http https ftp)
- host:服务器的ip地址或者域名
- port:服务器的端口(如果是走协议默认端口,80 or 443)
- path:访问资源的路径
- query-string:参数,发送给http服务器的数据
- anchor:锚(跳转到网页指定锚点位置)
http请求形式
http常见请求头 Request Headers
重点掌握:
- User-Agent:告诉对方服务器是什么客户端在请求资源,爬虫中模拟浏览器非常重要的一个手段
- Cookie:获取登录之后才能访问的资源
"""服务器的ip地址或者域名"""
Host: www.baidu.com
""" 链接:长连接 """
Connection: keep-alive
""" 升级不安全的请求:浏览器告诉服务器我会把不安全的http请求全部转换成https形式进行发送 """
Upgrade-Insecure-Requests: 1
""" 用户代理:展示了是以什么浏览器在什么平台访问的服务器 (服务器根据不同设备返回不同页面 手机端 pc端)"""
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36
""" q=0.9 表示权重 浏览器告诉服务器 我更愿意接收html xml这种数据,其次是image * """
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3
# 表示页面从哪个页面跳转过来的
Referer: https://www.baidu.com/
""" 告诉服务器可以接收到数据的编码方式 """
Accept-Encoding: gzip, deflate, br
""" 告诉服务器更愿意接收中文 其次是英文 """
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
""" 缓存 爬虫只需要关注 name value值"""
Cookie: BAIDUID=1522EA81CFA2C05D002EEE709F47F0C3:FG=1; BIDUPSID=1522EA81CFA2C05D002EEE709F47F0C3; PSTM=1547629798; BD_UPN=12314753; __cfduid=dd4409dcc34eb5caa8c85a58e66465fa91548159770; sug=3; ORIGIN=0; bdime=0;
常见的请求方法
- get
- post
get和post的请求的区别可以参考w3school
响应状态码
常见的状态码:
- 200: 成功
- 302: 临时转移至新的url
- 307: 临时转移至新的url
- 404: not found
- 500: 服务器内部错误(服务器发现爬虫不想返回资源的时候也往往会返回500 此时考虑反反爬)