[python]requests库的使用浅析

#coding=utf8
#Version:python 3.6.0
#Tools:Pycharm 2017.3.2

import requests
# r = requests.get('https://www.baidu.com/')
# print(type(r))
# print(r.status_code)
# print(type(r. text))
# print(r.text.encode('raw_unicode_escape').decode())
# print(r.cookies)

# import requests
# data = {
# 'name': 'germey',
# 'age': 22
# }
# r = requests.get('http://httpbin.org/get', params=data)
# print(r.text)
#调用 json()方法,就可以将返回结果是 JSON 格式的字符串转化为字典。
# print(r.json())

import re
# 知乎
headers = {
 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac 0S X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36'}
# r = requests.get('https://www.zhihu.com/explore', headers=headers)
# pattern = re.compile('explore-feed.*?question_link.*?>(.*?)</a>', re.S)
# titles = re.findall(pattern, r.text)
# print(titles)

# 获取github图标
# r = requests.get('https://github.com/favicon.ico')
# with open('favicon.ico', 'wb') as f:
#     f.write(r.content)

# 实现post请求方法
# data是提交的数据
# data ={'name': 'germey', 'age': '22'}
# r = requests.post("http://httpbin.org/post", data=data)
# print(r.text)

# 响应
# 有很多属性和方法可以用来获取其他信息,比如状态码、响应头、 Cookies 等
# import requests
# r = requests.get('http://www.jianshu.com',headers=headers)
# print(type(r.status_code), r.status_code)
# print(type(r.headers), r.headers)
# # print(type(r.cookies), r.cookies)
# print(type(r.url), r.url)
# print(type(r.history), r.history)

# 状态码常用来判断请求是否成功,而 requests 还提供了一个内置的状态码查询对象 requests.codes,示例如下:
# import requests
# r = requests.get('http://www.jianshu.com', headers=headers)
# exit() if not r.status_code == requests.codes.ok else print('Request Successfully')
# 常见状态码200:('ok'),403:('forbidden'),404:('not_found')

# 高级用法
# requests 可以模拟提交一些数据。假如有的网站需要上传文件,我们也可以用它来实现。示例如下:
# import requests
# favicon.ico 需要和当前脚本在同一目录下
# files = {'file': open('favicon.ico', 'rb')}
# r = requests.post("http://httpbin.org/post", files=files)
# print(r.text)

# Cookies
# requests,获取和设置 Cookies 只需一步即可完成。
import requests
r = requests.get('https://www.baidu.com', headers=headers)
print(r.cookies)
for key, value in r.cookies.items():
    print(key + '=' + value)

# 也可以直接用 Cookie 来维持登录状态,下面以知乎为例来说明。首先登录知乎,将Headers 中的 Cookie 内容复制下来
import requests
headers = {
'Cookie': '...',
'Host':'www.zhihu.com',
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac 0S X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36',
}
r = requests.get('https://www.zhihu.com', headers=headers)
print(r.text)
# 也可以通过 cookies 参数来设置,不过这样就需要构造 RequestsCookieJar 对象,而且需要分割一下 cookies。这相对烦琐,不过效果是相同的。


# 会话维持
# 用 Session,可以做到模拟同一个会话而不用担心 Cookies 的问题。它通常用于模拟登录成功之后再进行下一步的操作。
import requests
s = requests.Session()
s.get('http://httpbin.org/cookies/set/ number/123456789')
r = s.get('http://httpbin.org/cookies')
print(r.text)


# SSL证书验证
# 当发送 HTTP 请求的时候,它会检查 SSL 证书,我们可以使用 verify 参数控制是否检查此证书。其实如果不加 verify 参数的话,默认是 True,向动验证。
# 如果因为设置false有警告,可以通过设置忽略警告的方式来屏蔽这个警告
from requests.packages import urllib3
urllib3.disable_warnings()

# 代理设置
import requests
proxies = {
'http':'http://10.10.1.10:3128',
'https':'http://10.10.1.10:1080',
}
requests.get('https://www.taobao.com', proxies= proxies)

# 超时设置
r = requests.get('https://www.taobao.com',timeout=1)
# 实际上,请求分为两个阶段,即连接(connect)和读取(read)。上面设置的 timeout 将用作连接和读取这二者的 timeout 总和.如果要分别指定,就可以传入一个元组:
r = requests.get('https://www.taobao.com', timeout=(5, 11, 30))

# 身份认证
# import requests
# from requests.auth import HTTPBasicAuth
# r = requests.get('http://localhost:5000', auth=HTTPBasicAuth('username',' password'))
# print(r.status_code)
# 上面的代码可以直接简写如下:
import requests
r = requests.get('http://localhost:5000', auth =('username', 'password'))
print(r.status_code)


# Prepared Request
# 前面介绍 urllib 时,我们可以将请求表示为数据结构,其中各个参数都可以通过一个 Request 对象来表示.这在 requests 里同样可以做到,这个数据结构就叫 Prepared Request.
# from requests import Request, Session
# url = ''
# data = {
# 'name': 'germey'}
# headers = {
#
# }
# s = Session()
# req = Request('POST', url, data=data, headers=headers)
# prepped = s.prepare_request(req)
# r = s.send(prepped)
# print(r.text)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值