1. 程式人生 > >Python之網絡編程(requests模塊)

Python之網絡編程(requests模塊)

pymongo 信息 use {} 編程 port isp uid for

一、requests模塊的基本方法

import requests

1.res = requests.get(url,params={‘stu_name‘:‘小黑‘}) #發送get請求,傳參k-v形式

2.data={‘user‘:‘useraccount‘,‘pwf‘:‘password‘}

res = requests.post(url,data=data) #發送post請求,傳參k-v形式

3.data={"name":"requests_name","grade":"天蠍座"}

res = requests.post(url,json=data) #發送post請求,入參是json類型的

4.cookie = {‘zhangsan‘:‘abd9a0995f4696e1a60133220b32037a‘}

res = requests.post(url,data=data,cookies=cookie) #發送post請求,帶cookie的

5.header = {‘Referer‘:‘http://api.nnzhp.cn/‘}

res=requests.get(url,headers=header) #發送get請求,帶header的

6.res = requests.get(url,verify=False) #發送https請求,需加上verify=False

7.res.json() #把返回的結果轉成字典,必須返回是json

8.res.text #返回成字符串

9.res.content #用來下載文件用的,返回的是二進制

10.res.headers #獲取到返回的所有header

11.res.cookies #獲取到返回的所有cookie

12.res.status_code #獲取到請求響應的狀態碼

二、例子

例子一(下載圖片):

url6=‘https://aliimg.changba.com/cache/photo/855e5493-f018-44db-8892-c8660649327b_640_640.jpg‘
res = requests.get(url6,verify=False) #verify=False如果是https的話加上這個
with open(‘tu.jpg‘,‘wb‘) as fw: #打開一個文件
fw.write(res.content) #將請求獲取到的結果寫入到文件裏去,是文件,所以是res.content二進制

例子二(獲取qq群的成員信息存入到mongodb裏以及下載成員的頭像保存到本地):

 import pymongo,os
client = pymongo.MongoClient(host=‘x.x.x.x‘,port=xxxx)
db=client[‘qq_group‘]
table = db[‘xxx‘]
url = "https://qun.qq.com/cgi-bin/qun_mgr/search_group_members"

data = {"gc":xxxxx,"st":0,"end":200,"sort":0,"bkn":xxxxxxx}
header = {"Cookie":"pgv_pvi=1977809920; tvfe_boss_uuid=d8ce464d0b7bd6f6; RK=6RFHD8oPOz; ptcz=11c139fb4d425800954a94bcb78d8b04222ef05985e6b9ac493a28744decc178; pgv_pvid=744932512; ptui_loginuin=2851662269; o_cookie=2851662269; pt2gguin=o0469873580; uin=o0469873580; ptisp=ctc; pgv_si=s8086261760; skey=@LfPHQ7sb0; p_uin=o0469873580; pt4_token=sf7OadX0vT5Mv4PiIQ3xkHbiI9quA5GB75z8lMcLgag_; p_skey=PcX00u1AVFRWKu6N1S62ooT13P*JDcCOhq64nknIlGQ_"}

res = requests.post(url=url,data=data,headers=header)
mems = res.json().get("mems")#獲取到該群的所有成員的信息
for i in mems:
mem = {
"qq":i.get("uin"),
"gender":i.get("g"),
"nick":i.get("nick"),
"card":i.get("card"),
"qage":i.get("qage")
}
if mem.get("gender") == 0:
mem[‘gender‘] = "男"
elif mem.get("gender") == 1:
mem[‘gender‘] = "女"
else:
mem[‘gender‘] = "未知"
if mem.get("card") == "":
mem[‘card‘] = "沒有群名片"
table.insert_one(mem)
qq = mem.get("qq")
url= "http://q4.qlogo.cn/g?b=qq&nk={}&s=140".format(qq)
pics = requests.get(url)
abs_path=os.path.join(‘pics‘,str(qq)+‘.jpg‘) #拼接路徑,都把圖片保存到一個文件夾下面
with open(abs_path,"wb") as f:
      f.write(pics.content)
  print(‘%s的頭像已經下載完成.‘%mem.get("nick"))

Python之網絡編程(requests模塊)