爬虫(requests)

介绍

requests目前基本上完全满足web请求的所有需求,以下是requests 的特性:

Keep-Alive & 连接池
国际化域名和URL
带持久Cookie的会话
浏览器式的SSL认证
自动内容解码
基本/摘要时的身份认证
优雅的 key/value Cookie
自动解压
Unicode 响应体
HTTP(S) 代理支持文件分块上传
流下载
连接超时
分块请求
支持 .netrc

发送请求

import requests
>>>res=requests.get("https://www.baidu.com")
>>>res.status_code
200
>>>res.headers["content-type"]
'text/html'
>>>res.encoding
>>>res.text

10 个重要的参数

        
method, 请求方法
url, 资源地址
params=None, 查询参数也叫做查询字符串
data=None, post请求的表单数据
headers=None, 请求头
cookies=None, cookies
files=None, # 文件
auth=None, # 校验身份
timeout=None, 超时时间
allow_redirects=True, # 重定向
proxies=None, 代理
hooks=None,# 钩子函数
stream=None,#
verify=None, 证书忽略
cert=None, # 字符串 --证书的地址 元组()
json=None, post 请求的JSON数据

添加请求头

如果想自定义请求的Headers,同样的将字典数据传递给headers
数。
headers = {"user-agent': 'ny-app/0.0.1*}
resp = requests.get(url,headers=headers)

添加cookies

Requests中自定义Cookies也不用再去构造CookieJar对象,直接将字
典递给cookies参数。
cookies = {'cookies_are': 'working'}
resp =requests.get(url,cookies=cookies)

设置超时时间

设置访问超时,设置timeout参数即可。
resp =requests.get(*http://github.com',timeout=0.0001)

设置代理

当我们需要使用代理时,同样构造代理字典,传递给proxies参数。
proxies ={"http’: '127.0.0.1:10809', "https': '127.0.0.1:10809'}
resp =requests.get(*http://example.org', proxies=proxies)

重定向

很多网站是http开头,为了不影响老客户,原网站不动,当访问http
原网址时,重定向到新的https网址,在requests allow_redirects
认是True,如果是False则不允许重定向,也就无法重定向新网址获取
数据。
res=requests.get (url,allow_redirects=False)

证书忽略验证

有时候我们使用了抓包工具,这个时候由于抓包工具提供的证书并不是
由受信任的数字证书颁发机构颁发的,所以证书的验证会失败,所以我
们就需要关闭证书验证。在请求的时候把verify参数设置为False就可以
关闭证书验证了。
resp =requests.get(*http://httpbin.org/post', verify=False)
但是关闭验证后,会有一个比较烦人的warning:可以使用以下方法关闭警告:

 POST请求发送Json数据

json = {'json_style': "json-data'}
resp =requests.post("http://httpbin.org/post',json=json)

POST请求发送Form表单数据

处理表单ctrl+r   (.*): (.*)     "$1": "$2",

data = {"datal": "spider","data2":“验证数据"}
resp =requests.post(*http://httpbin.org/post', data=data)

response对象属性

print(res.text)#直接转换成字符串 非字节码
print(res.content)#图片数据 使用此参数
print(res.status_code)#状态码
print(res.json()["headers"]["User-Agent"])#自动转换成 字
典格式
# 一定要确保你使用的格式是json格式的数据
print(res.headers)#响应头
print(res.cookies)#响应cookie
print(res.url)#请求的url
print(res.request.url)#请求的url
print(res.request.headers)#请求头

响应内容

通过Requests发起请求获取到的,是一个requests.models.Response
对象。通过这个对象我们可以很方便的获取响应的内容。
之前通过urllib获取的响应,读取的内容都是bytes的二进制格式,需要
我们自己去将结果decode()一次转换成字符串数据。
Requests通过text属性,就可以获得字符串格式的响应内容。

字符编码和二进制数据

Requests会自动的根据响应的报头来猜测网页的编码是什么,然后根
据猜测的编码来解码网页内容,基本上大部分的网页都能够正确的被解
码。而如果发现text解码不正确的时候,就需要我们自己手动的去指定
解码的编码格式。而如果你需要获得原始的二进制数据,那么使用
content属性即可。
resp = requests.get(*http://httpbin.org/get')
resp.encoding = 'utf-8'

session方法会话保持

session方法是requests库发起请求的一种方法,这种方法会自动保存
访问页面得到的cookie值,从而再次访问的时候会自动携带cookie
使得操作cookie方便,不需要我们自己添加cookie了。常用于登录;
基本的使用方法与requests.get 相似,使用的session的时候需要先创
session对象

 1,创建一个session对象

2,找到登录页面的post请求网址

3,先登录(带cook)

4,在去get想要的网址

session=requests.session()#创建session对象
session.headers=headers#添加请求头
res_ss=session.get(index_url)

身份认证

 

 

 代理IP

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值