requests的使用(五)

147 阅读1分钟

超时的使用

import requests
try:
    url = "http://www.google.com/"
    response = requests.get(url,timeout = 3)
    # 连接+读取分离
    # response = requests.get(url,timeout = (5,11,30))
    # 永久等待
    # response = requests.get(url,timeout=None)
    # 永久等待
    # response = requests.get(url)
    print(response.text)
    print(response.status_code)
except Exception as e:
    print("get http://www.google.com/ failed")
print("over")

Request对象构造

from requests import Request, Session

url = 'http://httpbin.org/post'
data = {
    'name': 'germey'
}
headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36'
}
s = Session()
req = Request('POST', url, data=data, headers=headers)
prepped = s.prepare_request(req)
r = s.send(prepped)
print(r.text)

auth认证

import requests
from requests.auth import HTTPBasicAuth
# 第一种繁琐写法
r = requests.get('http://localhost:5000', auth=HTTPBasicAuth('username', 'password'))
print(r.status_code)

# 第二种简便写法
r = requests.get('http://localhost:5000', auth=('username', 'password'))
print(r.status_code)

chardet编码

import requests
import chardet

response = requests.get("http://www.baidu.cn")
# 注意这里使用text会报错
print(chardet.detect(response.content))

# 设置编码(检测网页编码)
response.encoding = chardet.detect(response.content)
# print response.text
print(response.history)  # 指的是跳转历史
print(response.url)      # 最终响应的url http://www.baidu.cn--->http://www.baidu.com/

数据展示如下

{'encoding': 'utf-8', 'confidence': 0.99, 'language': ''}
[<Response [302]>]
http://www.baidu.com/