Request資料抓取

2021-09-29 10:19:06 字數 4196 閱讀 6905

requests是在urllib的基礎上進一步封裝的,具備urllib的所有功能。安裝

http的常用請求是get和post。

get請求

get請求又兩種形式,帶引數和不帶引數。

#不帶引數

#帶引數

s?wd=python

一般**末端帶有「?」表示帶引數,反之,則不帶引數

get引數說明

帶引數的url的兩種請求方式

import requests

#第一種方式

)#第二種方式

#左邊params在get請求中表示設定引數

r = requests.get(url, params=params)

#輸出生成的url

print

(r.url)

動態設定url引數

post請求

即提交表單,表單的資料內容就是post的請求引數。

request實現post請求需設定請求引數data,資料格式可以為字典、元組、列表和json格式

import requests

# 字典型別

data =

# 元組或列表((

'key1'

,'value1'),

('key1'

,'value2'))

# json

import json

data =

# 將字典轉換json

data=json.dumps(data)

# 傳送post請求

(r.text)

新增請求頭

請求頭以字典形式生成,然後傳送請求中設定的headers引數,指向已定義的請求頭

, headers=headers)使用**ip

import requests

, proxies=proxies)

證書驗證

通常設定關閉。請求設定引數verify=false即可關閉證書驗證,預設情況下是true。若要設定證書檔案,可設定引數verify值為證書路徑。

import requests

url =

''# 關閉證書驗證

r = requests.get(url, verify=

false

)print

(r.status_code)

# 開啟證書驗證

# r = requests.get(url, verify=true)

# 設定證書所在路徑

# r = requests.get(url, verify= '/path/to/certfile')

超時設定

若不想程式等待時間過長或者延長等待時間,可以設定timeout的等待秒數。

)使用cookies

cookies用來標識使用者身份,在requests中以字典或requestscookiejar物件作為引數。獲取方式主要是從瀏覽器讀取和程式執行所產生。

import requests

temp_cookies=

'jsessionid_gds=y4p7osfr_iyv5udyd6c1drwe8metpqn0y58tg8cconvp020y2n!450649273;name=value'

cookies_dict =

for i in temp_cookies.split(

';')

: value = i.split(

'=')

cookies_dict [value[0]

]= value[1]

r = requests.get(url, cookies=cookies)

print

(r.text)

temp_cookies是cookies資訊,可在chrome開發者工具→network→某請求的headers→request headers中找到cookie對應的值。隨後將字串轉換成字典格式。

轉換規則:

以「;」分割,得到列表a

以「="分割,得到字典的鍵值對

當程式傳送請求時,(不設定引數cookies),自動生成乙個requestcookiejar物件,該物件用於存放cookies資訊。requests提供requestcookiejar物件和字典物件相互轉換,**如下:

import requests

url =

''r = requests.get(url)

# r.cookies是requestscookiejar物件

print

(r.cookies)

mycookies = r.cookies

# requestscookiejar轉換字典

cookies_dict = requests.utils.dict_from_cookiejar(mycookies)

print

(cookies_dict)

# 字典轉換requestscookiejar

cookies_jar = requests.utils.cookiejar_from_dict(cookies_dict, cookiejar=

none

, overwrite=

true

)print

(cookies_jar)

# 在requestscookiejar物件新增cookies字典中

print

(requests.utils.add_dict_to_cookiejar(mycookies, cookies_dict)

)

如果要將cookies寫入檔案,可使用http模組實現cookies的讀寫。除此之外,還可以將cookies以字典形式寫入檔案,此方法相比http模組讀寫更簡單,但安全性較低。使用方法如下:

import requests

url =

''r = requests.get(url)

# requestscookiejar轉換字典

cookies_dict = requests.utils.dict_from_cookiejar(mycookies)

# 寫入檔案

f =open

('cookies.txt'

,'w'

, encoding=

'utf-8'

)f.write(

str(cookies_dict)

)f.close(

)# 讀取檔案

f =open

('cookies.txt'

,'r'

)dict_value = f.read(

)f.close(

)# eval(dict_value)將字串轉換字典

print

(eval

(dict_value)

)r = requests.get(url, cookies=

eval

(dict_value)

)print

(r.status_code)

網路資料請求request

2.基於httpwebrequest 的get post方法 關於網路資料請求的類很多,httpwebrequest,webrequest,webclient以及httpclient,具體差別在此不在贅述,在應用方面介紹webclient與httpclient則顯得比較比較簡單粗暴,httpwebr...

Jsoup抓取資料

首先我們來看來自 的乙個html片段,了解其結構。class detail style display block class add jrsj plus bookid 609737 em class mark63 href target blank src alt 不死龍帝 style width...

Xmind Java資料抓取

思路 1,登入。2,登入成功後獲得cookie。3,將cookie放到請求頭中,向登入頁傳送請求。1.獲得url物件 url url newurl urlstring 2.開啟連線 3.向request中注入cookie urlconn.setrequestproperty cookie cooki...