今天主要講兩個方面:
利用Request庫進行POST請求表單交互
cookie實現(xiàn)模擬登錄網(wǎng)站
今requests可以以多種形式進行post請求,比如form表單形式、json形式等。今天主要以表單形式舉例:
Reqeusts支持以form表單形式發(fā)送post請求,只需要將請求的參數(shù)構(gòu)造成一個字典,然后傳給requests.post()的data參數(shù)即可。
示例網(wǎng)站:豆瓣網(wǎng):https://www.douban.com
有兩種方式可以查詢提交表單的字段:
通過查詢源代碼的form標簽,input標簽
通過瀏覽器的Network項查詢
第一種:
首先我們找到登錄的元素,在輸入賬號處選中–>右鍵–>檢查
然后直接查詢網(wǎng)頁源代碼去找到上面的部分,根據(jù)標簽來觀察提交的表單參數(shù),這里強調(diào)一下:
form標簽和form標簽下的input標簽非常重要,form標簽中的action屬性代表請求的URL,input標簽下的name屬性代表提交參數(shù)的KEY。
代碼參考如下:
import requestsurl="https://www.douban.com/accounts/login" #action屬性params={ "source":"index_nav", #input標簽下的name "form_email":"xxxxxx", #input標簽下的name "form_password":"xxxxxx" #input標簽下的name}html=requests.post(url,data=params)print(html.text)
運行后發(fā)現(xiàn)已登錄賬號
第二種:
通過瀏覽器Network項查詢表單參數(shù):
點擊右鍵–>檢查–>選擇Network
然后手動輸入賬號和密碼登錄,此時顯示加載了文件,選擇加載的第一個文件:
選中后,查看Headers字段下的數(shù)據(jù),會發(fā)現(xiàn)請求的URL
往下拉,會發(fā)現(xiàn)字段參數(shù):
然后再按照上面的代碼寫一下就可以了。
Cookie,有時也用其復數(shù)形式 Cookies,指某些網(wǎng)站為了辨別用戶身份、進行 session 跟蹤而儲存在用戶本地終端上的數(shù)據(jù)(通常經(jīng)過加密)。
我們可以通過手動登錄后,查看瀏覽器的Network選項找到cookie值,記住cookie值不要透露出去。
操作步驟:
右鍵–>檢查–>選擇Network–>手動登錄–>在加載文件中找到本網(wǎng)址的Name
得到cookie和URL之后,把cookie添加到headers中,運行,代碼如下:
import requestsurl="https://www.douban.com/"header={"Cookie":'XXXXXXXXXXXXXXXX'} #cookie值不要泄露html=requests.get(url,headers=header)print(html.text)
希望對新人有所幫助!
本文參考了網(wǎng)上信息和《從零開始學習Python網(wǎng)絡爬蟲》