爬虫的本质就是通过程序发送HTTP请求,并返回HTML文档,遵守HTTP的传输协议是爬虫的基础。
分类http :保证准确高效的传输 超文本文档 https :以安全为目标的超文本传输协议,http的基础上增加ssl层。构建一个信息安全通道,保证数据的传输安全等。
构成 请求 requestsrequest官网:[https://docs.python-requests.org/en/master/api/#requests.Request] 1、向服务器发送请求使用的url URL 统一资源定位符,也就是我们常说的网址。 用来定位访问资源的字符串。⼀般来说, 我们访问的⽹⻚链接分为两种:动态⽹址、静态⽹址。其中⽹址中含有问号?就是动态⽹址,没有就是静态⽹址 2、url构成格式: 协议://host[:port]/path/…/[?query-string] 协议:访问协议如 http https ftp
- host:服务器的IP地址
- port:服务器的端口号 如果默认端口号一般为 80 或者 443
- path:访问资源的路径
- query-string:参数,发送给http服务器的数据,多个参数之间用&隔开
3、请求时的请求头 header
- cookie 是服务器发给用户的,用来确定用户状态的。
- user-agent 是用户浏览器的信息,有些网站为了防止爬虫,会识别user-agent 来判断,将其改成正常浏览器的User-Agent 内容, 伪装成⼀个普通的⽤户。
4、请求方法 get post get方法:请求指定⻚⾯的信息,并返回实体。(最常用) requests.get(url, params=None, **kwargs)
- url : 基准url 不带参数
- params :字典类型的参数,会放到链接中
- **kwargs: 请求中需要的其他参数 比如 headers cookies 等
# 使⽤Requests发起Get请求
url = "https://www.baidu.com"
r = requests.get(url)
r
# 查看⽹⻚源代码
r.text
# 查看解析⽹⻚使⽤的编码,这⾥显示出的编码是我们解析⽹⻚使⽤的编码
r.encoding
# 使⽤appent_encoding 推测⽹⻚编码
r.apparent_encoding
# 给encoding属性重新赋值, ⽤推测的编码去解析⽹⻚内容
r.encoding = r.apparent_encoding
post 方法:⽤于向指定资源提交数据进⾏处理请求(例如表单或者上传⽂件) requests.post(url, data=None, json=None, **kwargs)
- url 请求用url
- data 需要提交的数据 字典 列表形式的元组等
- json 需要发送的json数据
- **kwargs:请求过程中其他需要的参数 与get 类似
1、响应 状态码(Response Status Code) 200 请求已成功,请求所希望的响应头或数据体将随此响应返回 404 请求失败,请求所希望得到的资源未被在服务器上发现。 2、响应头(Respongse Headers)
3、响应体(Respongse body )
# 查看 网页的编码格式
response.encoding
# 设置网页的编码格式 为 推测的网页编码格式
response.encoding = response.apparent_encoding
# 响应的正文,以str 形式输出
response.text
# 如果返回的数据是json字符串,可以使用 json( ) 方法取将json转化为Python字典对象
response.json()