Python——request模塊


1.Requsets模塊的安裝

進入cmd

cd C:\Python27\Scripts
pip install requests

2.Requests模塊的簡單使用

 1 #HTTP請求類型
 2 #無參數的get類型
 3 r = requests.get('http://httpbin.org/get')
 4 #有參的get類型
 5 payload = {'key1':'vaule1','key2':'value2'}
 6 r = requests.get(url,params=payload)
 7 #無參的post類型
 8 r = requests.post("http://httpbin.org/post")
 9 #有參的post類型
10 r = requests.post(url,data=payload)
11 #data不光可以接受字典類型的數據,還可以接受json等格式
12 import json
13 payload = {'a':'','b':'hello'}
14 r = requests.post('http://httpbin.org/post', data=json.dumps(payload))
15 #發送文件的post類型,這個相當於向網站上傳一張圖片,文檔等操作,這時要使用files參數
16 files = {'file': open('touxiang.png', 'rb')}
17 r = requests.post('http://httpbin.org/post', files=files)
18 #put類型
19 r = requests.put("http://m.ctrip.com/put")
20 #delete類型
21 r = requests.delete("http://m.ctrip.com/delete")
22 #head類型
23 r = requests.head("http://m.ctrip.com/head")
24 #options類型
25 r = requests.options("http://m.ctrip.com/get")
26 
27 #獲取響應內容
28 print r.content #以字節的方式去顯示,中文顯示為字符
29 print r.text #以文本的方式去顯示
30 
31 #URL傳遞參數
32 payload = {'keyword': '日本', 'salecityid': '2'}
33 r = requests.get("http://m.ctrip.com/webapp/tourvisa/visa_list", params=payload) 
34 print r.url #示例為http://m.ctrip.com/webapp/tourvisa/visa_list?salecityid=2&keyword=日本
35 
36 #獲取/修改網頁編碼
37 r = requests.get('https://github.com/timeline.json')
38 print r.encoding
39 r.encoding = 'utf-8'
40 
41 #json處理
42 r = requests.get('https://github.com/timeline.json')
43 print r.json() #需要先import json    
44 
45 #定制請求頭
46 url = 'http://m.ctrip.com'
47 headers = {'User-Agent' : 'Mozilla/5.0 (Linux; Android 4.2.1; en-us; Nexus 4 Build/JOP40D) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19'}
48 r = requests.post(url, headers=headers)
49 print r.request.headers
50 
51 #復雜post請求
52 url = 'http://m.ctrip.com'
53 payload = {'some': 'data'}
54 r = requests.post(url, data=json.dumps(payload)) #如果傳遞的payload是string而不是dict,需要先調用dumps方法格式化一下
55 
56 #post多部分編碼文件
57 url = 'http://m.ctrip.com'
58 files = {'file': open('report.xls', 'rb')}
59 r = requests.post(url, files=files)
60 
61 #響應狀態碼
62 r = requests.get('http://m.ctrip.com')
63 print r.status_code
64     
65 #響應頭
66 r = requests.get('http://m.ctrip.com')
67 print r.headers
68 print r.headers['Content-Type']
69 print r.headers.get('content-type') #訪問響應頭部分內容的兩種方式
70     
71 #Cookies
72 r = requests.get('http://www.baidu.com')
73 r.cookies['BAIDUID']  #讀取cookies
74     
75 url = 'http://m.ctrip.com/cookies'
76 cookies = dict(cookies_are='working')
77 r = requests.get(url, cookies=cookies) #發送cookies
78 
79 #設置超時時間
80 r = requests.get('http://m.ctrip.com', timeout=0.001)
81 #訪問中使用session
82 s = requests.Session() #先初始化一個session對象
83 r = s.post(url,data = user) #然后使用這個session對象來進行訪問
84 #設置訪問代理
85 proxies = {
86            "http": "http://10.10.10.10:8888",
87            "https": "http://10.10.10.100:4444",
88           }
89 r = requests.get('http://m.ctrip.com', proxies=proxies)

3.json請求

 1 #!/user/bin/env python
 2 #coding=utf-8
 3 import requests
 4 import json
 5 
 6 class url_request():
 7     def __init__(self):
 8             """ init """    
 9 
10 if __name__=='__main__':
11     headers = {'Content-Type' : 'application/json'}
12     payload = {'CountryName':'中國',
13                'ProvinceName':'陝西省',
14                'L1CityName':'漢中',
15                'L2CityName':'城固',
16                'TownName':'',
17                'Longitude':'107.33393',
18                'Latitude':'33.157131',
19                'Language':'CN'
20                }
21     r = requests.post("http://www.xxxxxx.com/CityLocation/json/LBSLocateCity",headers=headers,data=payload)
22     #r.encoding = 'utf-8'
23     data=r.json()
24     if r.status_code!=200:
25         print "LBSLocateCity API Error " + str(r.status_code)
26     print data['CityEntities'][0]['CityID'] #打印返回json中的某個key的value
27     print data['ResponseStatus']['Ack']
28     print json.dumps(data,indent=4,sort_keys=True,ensure_ascii=False) #樹形打印json,ensure_ascii必須設為False否則中文會顯示為unicode

4.xml請求

 1 #!/user/bin/env python
 2 #coding=utf-8
 3 import requests
 4 
 5 class url_request():
 6     def __init__(self):
 7             """ init """    
 8 
 9 if __name__=='__main__':
10     
11     headers = {'Content-type': 'text/xml'}
12     XML = '<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><Request xmlns="http://tempuri.org/"><jme><JobClassFullName>WeChatJSTicket.JobWS.Job.JobRefreshTicket,WeChatJSTicket.JobWS</JobClassFullName><Action>RUN</Action><Param>1</Param><HostIP>127.0.0.1</HostIP><JobInfo>1</JobInfo><NeedParallel>false</NeedParallel></jme></Request></soap:Body></soap:Envelope>'
13     url = 'http://jobws.push.mobile.xxxxxxxx.com/RefreshWeiXInTokenJob/RefreshService.asmx'
14     r = requests.post(url,headers=headers,data=XML)
15     #r.encoding = 'utf-8'
16     data = r.text
17     print data

5.Requests模擬登入實例

 1 import requests
 2 
 3 payload = {'action:login':'','uid':'08133248','domain':'cumt.edu.cn','nodetect':'false','password':'wattcswh','locale':'zh_CN'}
 4 header = {
 5 "Host": "mail.cumt.edu.cn",
 6 "User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0",
 7 "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
 8 "Accept-Language": "zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3",
 9 "Accept-Encoding": "gzip, deflate",
10 "Referer": "http://acm.hdu.edu.cn/",
11 "Cookie": "uid=08133248",
12 "Connection": "keep-alive"
13 }
14 
15 s = requests.Session()
16 r = s.post('http://mail.cumt.edu.cn/coremail/index.jsp',data=payload,headers=header)
17 print r.status_code

6.快速口算 分值: 350

小明要參加一個高技能比賽,要求每個人都要能夠快速口算四則運算,2秒鍾之內就能夠得到結果,但是小明就是一個小學生沒有經過特殊的培訓,那小明能否通過快速口算測驗呢?
import re
try:
    import requests
except ImportError:
    raise SystemExit('cuole')
s = requests.Session()
url='http://lab1.xseclab.com/xss2_0d557e6d2a4ac08b749b61473a075be1/index.php'
r = s.get(url)
res = unicode(r.content,'utf-8').encode('gbk')
num = re.findall(re.compile(r'<br/>\s+(.*?)='),res)[0]
r = s.post(url,data={'v':eval(num)})
key = re.findall(re.compile(r'<body>(.*?)</body>'), r.content)[0]
open('d:/ans.txt','w').write(str(key))

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM