Python requests库

requests

请求

get请求

import requests
response= requests.get('http://httpbin.org/get')
print(response.text)

结果

{
  "args": {}, 
  "headers": {
    "Accept": "*/*", 
    "Accept-Encoding": "gzip, deflate", 
    "Host": "httpbin.org", 
    "User-Agent": "python-requests/2.18.4"
  }, 
  "origin": "113.105.12.153, 113.105.12.153", 
  "url": "https://httpbin.org/get"
}

带参数的get请求

第一种:
在url后面添加参数用&分隔,?开头

import requests
response= requests.get('http://httpbin.org/get?name=germey&age=22')
print(response.text)

结果

{
  "args": {
    "age": "22", 
    "name": "germey"
  }, 
  "headers": {
    "Accept": "*/*", 
    "Accept-Encoding": "gzip, deflate", 
    "Host": "httpbin.org", 
    "User-Agent": "python-requests/2.18.4"
  }, 
  "origin": "113.105.12.153, 113.105.12.153", 
  "url": "https://httpbin.org/get?name=germey&age=22"
}

第二种
用参数params

import requests

data={
    'name':'germey',
    'age':'22'
}
response= requests.get('http://httpbin.org/get',params=data)
print(response.text)

解析json

import requests
import json

response= requests.get('http://httpbin.org/get')
print(type(response.text))
print(response.json())
print(json.loads(response.text))
print(type(response.json()))

结果

<class 'str'>
{'args': {}, 'headers': {'Accept': '*/*', 'Accept-Encoding': 'gzip, deflate', 'Host': 'httpbin.org', 'User-Agent': 'python-requests/2.18.4'}, 'origin': '113.105.12.153, 113.105.12.153', 'url': 'https://httpbin.org/get'}
{'args': {}, 'headers': {'Accept': '*/*', 'Accept-Encoding': 'gzip, deflate', 'Host': 'httpbin.org', 'User-Agent': 'python-requests/2.18.4'}, 'origin': '113.105.12.153, 113.105.12.153', 'url': 'https://httpbin.org/get'}
<class 'dict'>

获取二进制数据(用于图片,视频这些)

用.content来获取

import requests

response=requests.get('http://github.com/favicon.ico')
print(type(response.text))
print(type(response.content))
print(response.text)
print('------------------------------------------------------------------------------------------------------------------------')
print(response.content)	

结果:

<class 'str'>
<class 'bytes'>
	:�������OL������������������!������4@���8���
��������333���t�
------------------------------------------------------------------------------------------------------------------------
b'\x00\x00\x01\x00\x02\x00\x10\x10\x00\x00\x01\x00 \x00(\x05\x00\x00&\x00\x00\x00  \x00\x00\x01\x00 \x00(\x14\x00\x00N\x05\x00\x00(\x00\x00\x00\x10\x00\x00\x00 \x00\x00\x00\x01\x00 \x00\x00\x00\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x11\x13v\x13\x13\x13\xc5\x0e\x0e\x0e\x12\x00\x00\x00\x00\x00\x00\x00\x00\x0f\x0f\x0f\x11\x11\x11\x14\xb1\x13\x13\x13i\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x14\x14\x14\x96\x13\x13\x14\xfc\x13\x13\x14\xed\x00\x00\x00\x19\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x18\x15\x15\x17\xff\x15\x15\x17\xff\x11\x11\x13\x85\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x11\x11\x12\xc1\x13\x13\x14\xee\x11\x11\x11\x1e\x10\x10\x10\x10\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\r\x13\x13\x14\xf5\x15\x15\x17\xff\x15\x15\x17\xff\x11\x11\x14\xaf\x00\x00\x00\x00\x00\x00\x00\x00\

添加headers

import requests

headers={
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36'    
}
response=requests.get('https://www.zhihu.com/explore',headers=headers)
print(response.text)

基本post请求

import requests

data={
    'name':'yyy',
    'age':'22'
    
}
response=requests.post('http://httpbin.org/post',data=data)
print(response.text)

结果:

{
  "args": {}, 
  "data": "", 
  "files": {}, 
  "form": {
    "age": "22", 
    "name": "yyy"
  }, 
  "headers": {
    "Accept": "*/*", 
    "Accept-Encoding": "gzip, deflate", 
    "Content-Length": "15", 
    "Content-Type": "application/x-www-form-urlencoded", 
    "Host": "httpbin.org", 
    "User-Agent": "python-requests/2.18.4"
  }, 
  "json": null, 
  "origin": "113.105.12.153, 113.105.12.153", 
  "url": "https://httpbin.org/post"
}

响应

import requests
	
response= requests.get('http://www.jianshu.com')
print(type(response.status_code),response.status_code)#状态码
print(type(response.headers),response.headers)#状态头
print(type(response.cookies),response.cookies)#cookies
print(type(response.url),response.url)#url
print(type(response.history),response.history)#历史

结果:

<class 'int'> 200
<class 'requests.structures.CaseInsensitiveDict'> {'Server': 'Tengine', 'Content-Type': 'text/html; charset=utf-8', 'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'Date': 'Tue, 19 Mar 2019 08:48:54 GMT', 'Vary': 'Accept-Encoding', 'X-Frame-Options': 'DENY', 'X-XSS-Protection': '1; mode=block', 'X-Content-Type-Options': 'nosniff', 'ETag': 'W/"d0830a3c7fc5a13fae8c3a870d272b00"', 'Cache-Control': 'max-age=0, private, must-revalidate', 'Set-Cookie': 'locale=zh-CN; path=/', 'X-Request-Id': 'c88f2f0b-c443-471e-9a3d-ac0d442e955b', 'X-Runtime': '0.008843', 'Strict-Transport-Security': 'max-age=31536000; includeSubDomains; preload', 'Content-Encoding': 'gzip', 'Via': 'cache10.l2cm12[21,0], cache4.cn838[83,0]', 'Timing-Allow-Origin': '*', 'EagleId': '6e34c49815529853346494291e'}
<class 'requests.cookies.RequestsCookieJar'> <RequestsCookieJar[<Cookie locale=zh-CN for www.jianshu.com/>]>
<class 'str'> https://www.jianshu.com/
<class 'list'> [<Response [301]>]

状态码的判断

import requests

response=requests.get('http://httpbin.org')
exit() if not response.status_code ==200 else print('response success')#这里是if not 意思是条件成立不执行exit(),而是执行print语句

高级操作

文件上传

import requests

files={'files':open('C:/Users/hanson/Desktop/1/maoyantop100.txt','rb')}
response=requests.post('http://httpbin.org/post',files=files)
print(response.text)

结果

	{
  "args": {}, 
  "data": "", 
  "files": {
    "files": "{\"index\": \"1\", \"image\": \"https://p1.meituan.net/movie/20803f59291c47e1e116c11963ce019e68711.jpg@160w_220h_1e_1c\", \"title\": \"\u9738\u738b\u522b\u59ec\", \"star\": \"\u5f20\u56fd\u8363,\u5f20\u4e30\u6bc5,\u5de9\u4fd0\", \"time\": \"1993-01-01\", \"score\": \"9.5\"}\r\n{\"index\": \"2\", \"image\": \"https://p0.meituan.net/movie/283292171619cdfd5b240c8fd093f1eb255670.jpg@160w_220h_1e_1c\", \"title\": \"\u8096\u7533\u514b\u7684\u6551\u8d4e\", \"star\": \"\u8482\u59c6\u00b7\u7f57\u5bbe\u65af,\u6469\u6839\u00b7\u5f17\u91cc\u66fc,\u9c8d\u52c3\u00b7\u5188\u987f\", \"time\": \"1994-10-14(\u7f8e\u56fd)\", \"score\": \"9.5\"}\r\n{\"index\": \"3\", \"image\": \"https://p0.meituan.net/movie/289f98ceaa8a0ae737d3dc01cd05ab052213631.jpg@160w_220h_1e_1c\", \"title\": \"\u7f57\u9a6c\u5047\u65e5\", \"star\": \"\u683c\u5229\u9ad8\u91cc\u00b7\u6d3e\u514b,\u5965\u9edb\u4e3d\u00b7\u8d6b\u672c,\u57c3\u8fea\u00b7\u827e\u4f2f\u7279\", \"time\": \"1953-09-02(\u7f8e\u56fd)\", \"score\": \"9.1\"}\r\n{\"index\": \"4\", \"image\": \"https://p1.meituan.net/movie/6bea9af4524dfbd0b668eaa7e187c3df767253.jpg@160w_220h_1e_1c\", \"title\": \"\u8fd9\u4e2a\u6740\u624b\u4e0d\u592a\u51b7\", \"star\": \"\u8ba9\u00b7\u96f7\u8bfa,\u52a0\u91cc\u00b7\u5965\u5fb7\u66fc,\u5a1c\u5854\u8389\u00b7\u6ce2\u7279\u66fc\", \"time\": \"1994-09-14(\u6cd5\u56fd)\", \"score\": \"9.5\"}\r\n{\"index\": \"5\", \"image\": \"https://p1.meituan.net/movie/b607fba7513e7f15eab170aac1e1400d878112.jpg@160w_220h_1e_1c\", \"title\": \"\u6cf0\u5766\u5c3c\u514b\u53f7\", \"star\": \"\u83b1\u6
	     }, 
  "form": {}, 
  "headers": {
    "Accept": "*/*", 
    "Accept-Encoding": "gzip, deflate", 
    "Content-Length": "24892", 
    "Content-Type": "multipart/form-data; boundary=ba6fe455654d405a8c2ebb90fae56547", 
    "Host": "httpbin.org", 
    "User-Agent": "python-requests/2.18.4"
  }, 
  "json": null, 
  "origin": "113.105.12.153, 113.105.12.153", 
  "url": "https://httpbin.org/post"

}
获取cookie

import requests

response=requests.get('https://www.baidu.com')
print(response.cookies)
for key,value in response.cookies.items():#cookies是一个列表形式
    print(key+'='+value)

会话维持
模拟登陆

import requests

s=requests.Session()#Session对象发起两次请求,在同一个浏览器
s.get('http://httpbin.org/cookies/set/number/123456789')
response=s.get('http://httpbin.org/cookies')
print(response.text)

结果:

{
  "cookies": {
    "number": "123456789"
  }
}

证书验证

第一种

import requests
from requests.packages import urllib3

urllib3.disable_warnings()   #消除警告
response=requests.get('https://www.12306.cn',verify=False) #用verify=False来不验证证书
print(response.status_code)

第二种

import requests

response=requests.get('https://www.12306.cn',cert=('/path/server.crt','/path/key')) 用cert把证书地址写进去
print(response.status_code)

代理设置

使用proxies参数
第一种:直接找代理

import requests

proxies={
    'http':'123.207.247.86:9999'
    
}
response=requests.get('http://httpbin.org/get',proxies=proxies)
print(response.text)

结果

{
  "args": {}, 
  "headers": {
    "Accept": "*/*", 
    "Accept-Encoding": "gzip, deflate", 
    "Host": "httpbin.org", 
    "User-Agent": "python-requests/2.18.4"
  }, 
  "origin": "123.207.247.86, 123.207.247.86", 
  "url": "https://httpbin.org/get"
}

超时设置
使用参数timeout

	import requests
	from requests.exceptions import ReadTimeout
	try:
	    response=requests.get('http://httpbin.org/get',timeout=0.1)
	    print(response.text)
	except ReadTimeout:
	    print('TIME OUT')

第二种:购买代理

在这里插入图片描述

proxyaddr = '116.196.18.250'  # 代理的IP地址
proxyport = '16816'  # 代理的端口号
proxyuser = '9339855'  # 代理的账号
proxypasswd = 'y4r83bg3'  # 代理的密码
	
    proxies = {
        "http": "http://%s:%s@%s:%s" % (proxyuser, proxypasswd, proxyaddr, proxyport)

    }

认证设置
访问某个网站需要认证

import requests

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

异常处理

百度搜索‘requests’的api看下异常的抛出请求是什么
一般需要from requests.exceptions import xxx,xxx,xxx,xxx

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值