requests进阶

基本POST请求(data参数)

1. 最基本post方法

response = requests.post("http://www.baidu.com/", data = data)

2. 传入data数据

对于 POST 请求来说,我们一般需要为它增加一些参数。那么最基本的传参方法可以利用 data 这个参数。

import requests
formdata = {
    "action": "FY_BY_CLICKBUTTION",
    "bv": "20d61fc7e537da4985601dbf07f2a9f9",
    "client": "fanyideskweb",
    "doctype": "json",
    "from": "AUTO",
    "i": "love",
    "keyfrom": "fanyi.web",
    "salt": "15528492339058",
    "sign": "29f45989d1491e03a2fe5d3beda8602d",
    "smartresult": "dict",
    "to": "AUTO",
    "ts": "1552849233905",
    "typoResult": "false",
    "version": "2.1",
}

url = "http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule"

headers={
   "Accept":"application/json, text/javascript, */*; q=0.01",
   "Accept-Encoding":"gzip, deflate",
   "Accept-Language":"zh-CN",
   "Cache-Control":"no-cache",
   "Connection":"Keep-Alive",
   "Content-Length":str(len(formdata)),
   "Content-Type":"application/x-www-form-urlencoded; charset=UTF-8",
   "Cookie":"OUTFOX_SEARCH_USER_ID=721421153@10.169.0.82; OUTFOX_SEARCH_USER_ID_NCOO=1383909470.6487217; JSESSIONID=aaap2j2rlgkbi7hxtbnMw; ___rl__test__cookies=1552849233904",
   "Host":"fanyi.youdao.com",
   "Referer":"http://fanyi.youdao.com/",
   "User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko",
   "X-Requested-With":"XMLHttpRequest",}

response = requests.post(url, data = formdata, headers = headers)

print (response.text)

# 如果是json文件可以直接显示
print (response.json())

代理(proxies参数)

如果需要使用代理,你可以通过为任意请求方法提供 proxies 参数来配置单个请求:

import requests

proxies= {
    "http":"http://127.0.0.1:9999"
}
response  = requests.get("https://www.baidu.com",proxies=proxies)

print(response.text)

如果代理需要设置账户名和密码,只需要将字典更改为如下:

proxies = {
"http":"http://user:password@127.0.0.1:9999"
}

米扑代理

认证设置

如果碰到需要认证的网站可以通过requests.auth模块实现

import requests
from requests.auth import HTTPBasicAuth

response = requests.get("http://120.27.34.24:9001/",auth=HTTPBasicAuth("user","123"))
print(response.status_code)

另一种方式:

import requests

response = requests.get("http://120.27.34.24:9001/",auth=("user","123"))
print(response.status_code)

Cookies 和 Session

获取cookie

import requests

response = requests.get("http://www.baidu.com")

print(response.cookies)

for key,value in response.cookies.items():
    print(key+"="+value)

会话维持session

cookie的一个作用就是可以用于模拟登陆,做会话维持

import requests

# 创建session对象,可以保存Cookie值
s = requests.Session()

# 发送请求,并获取Cookie值保存在ssion里
s.get("http://httpbin.org/cookies/set/name/python")

response = s.get("http://httpbin.org/cookies")

print(response.text)

SSL证书验证

现在的很多网站都是https的方式访问,所以这个时候就涉及到证书的问题 img

import requests

response = requests.get("https://www.12306.cn/mormhweb/")
print(response.status_code)

如果SSL证书验证不通过,或者不信任服务器的安全证书,则会报出SSLError,默认的12306网站的证书是不合法的,这样就会提示如下错误 img

为了避免这种情况的发生可以通过verify=False即可

response = requests.get("https:/www.12306.cn",verify=False)
CopyRight©2019 ChenYangchen all right reserved,powered by Gitbook该文件修订时间: 2019-03-18 03:12:38