python requests練習筆記

運行環境:win10 + python36

參考文檔:

http://www.python-requests.org/en/master/
http://docs.python-requests.org/en/master/api/#requests.Session

模塊安裝:pip install requests

開始前例行導入模塊:

import requests as rq

一個簡單的訪問網頁例子:

r = rq.get("http://www.baidu.com.cn")

同理還有發送數據的post:

#
r = rq.post(posturl,data={'key':'value'})
#如果發送的數據是json格式的,那麼data是要變通的,比如
#(2.4.2版新功能...現在都2.19了,原來是用json模塊的json.dumps(data)格式化數據再發送的)
r = rq.post(posturl,json={'key':'value'})

請求數據的時候需要文件頭:大概長這樣

#文件頭的作用我所知的只有反扒。
headers = {
    "Content-Type": "application/json;charset=UTF-8",
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:56.0) Gecko/20100101 Firefox/56.0",
}
#訪問
r = rq.post(posturl,data={'key':'value'},headers=headers)
#還有請求超時設置(要知道有這回事,有需求時候再百度怎麼用吧)
r = rq.post(posturl,data={'key':'value'},headers=headers,timeout=0.001)

請求之後,就是返回結果了,返回結果都在請求裏,上例用r表示,結果的內容可以這樣查看

print(r.text)
#如果請求失敗呢?請看
print(r.status_code)
#還可以查看文件頭
r.headers
#查看cookies
r.cookies
#回頭看請求的網址
r.url

如果返回的是JSON數據,還可以格式化,同時賦值給j變量,然後就可以按json的取數方式取數了:

j = r.json()
#先看一下r的結構
print(r.text)
#假如r是這樣的{"total": 1,"status": "200","rows": [{"accountAmount": 0.0,"amount": "4358.0","approve": true}]}
#那麼數據可以這樣取
print(j["total"])
print(j["rows"][0]["accountAmount"])

#如果是網頁格式,一般可以用正則或者xpath進行取數
import re

from lxml import etree
etree.HTML()

如果 返回的結果r有亂碼怎麼辦

#先查看編碼
print(r.encoding)
#然後更改編碼
r.encoding = "utf-8" 

提一下,遇到過一種情形,r返回的是json數據,編碼是utf-8,然後r.text是亂碼,但用json方法取數後是正常的,不知道原因。

 

下面說說session,用於跨請求保持某些參數,具體不懂,這裏使用它來登陸網址,然後繼續請求這個網站下的其他網址。

#首先是設置連接
conn = rq.session()
#然後是get一下這個網站的主頁,這樣就獲取了這個網址的cookies了.
#有些登陸問題很煩的,百度是各種招數,太煩了,這裏直接先get一下,獲取了cookies。那麼還需要設置其他嗎?反正我登陸的網址不用了。
#忘了是什麼問題導致我先get一下這個網址了。反正後來能登陸了,我把這個刪了也沒影響登陸成功了。有機會以後一定要好好研究一下
#半路出家的麻煩就在於基礎太挫了,常識都沒有。也就是說,這裏先get可能是不需要的步驟。
conn.get("URL")
#再然後就是正式登陸網站了
login = conn.post(login_url, data={'key':'value'})
#查看一下請求結果
print(login.text)

#登陸成功的就可以在這個網站上遨遊了,通常,這樣搜索的請求類型就算是post,也可以用get來獲取了(唔,我想當然的,也不知道說的對不對)。
search = conn.get(post_url&參數)

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章