爬虫(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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值