爬蟲第八關 登陸發表評論

2021-10-25 17:19:15 字數 3579 閱讀 1165

最終**

post請求的引數就不會直接顯示,而是隱藏起來。像賬號密碼這種私密的資訊,就應該用post的請求。如果用get請求的話,賬號密碼全部會顯示在**上。可以這麼理解,get是明文顯示,post是非明文顯示。

通常,get請求會應用於獲取網頁資料,比如我們之前學的requests.get()。post請求則應用於向網頁提交資料,比如提交表單型別資料(像賬號密碼就是網頁表單的資料)

cookies是伺服器為了標記使用者,儲存在使用者本地的資料,它裡面也儲存了使用者的登入資訊,同時它有一定的時效性,過期就會失效。

import requests

#引入requests。

url =

' '#把請求登入的**賦值給url。

headers =

#加請求頭,前面有說過加請求頭是為了模擬瀏覽器正常的訪問,避免被反爬蟲。

data =

#把有關登入的引數封裝成字典,賦值給data。

login_in = requests.post(url,headers=headers,data=data)

cookies = login_in.cookies

#提取cookies的方法:呼叫requests物件(login_in)的cookies屬性獲得登入的cookies,並賦值給變數cookies。

url_1 =

''data_1 =

comment = requests.post(url_1,headers=headers,data=data_1,cookies=cookies)

#呼叫cookies的方法就是在post請求中傳入cookies=cookies的引數。

print

(comment.status_code)

session是會話過程中,伺服器用來記錄特定使用者會話的資訊。

import requests

#引用requests。

session = requests.session(

)#用requests.session()建立session物件,相當於建立了乙個特定的會話,幫我們自動保持了cookies。

url =

''headers =

data =

session.post(url,headers=headers,data=data)

url_1 =

''data_1 =

comment = session.post(url_1,headers=headers,data=data_1)

print

(comment)

#列印comment

import requests,json

#引入requests和json模組。

session = requests.session(

)

url =

' 'headers =

data =

session.post(url, headers=headers, data=data)

cookies_dict = requests.utils.dict_from_cookiejar(session.cookies)

#把cookies轉化成字典。

print

(cookies_dict)

#列印cookies_dict

cookies_str = json.dumps(cookies_dict)

#呼叫json模組的dumps函式,把cookies從字典再轉成字串。

print

(cookies_str)

#列印cookies_str

f =open

('cookies.txt'

,'w'

)#建立名為cookies.txt的檔案,以寫入模式寫入內容。

f.write(cookies_str)

#把已經轉成字串的cookies寫入檔案。

f.close(

)#關閉檔案。

cookies_txt =

open

('cookies.txt'

,'r'

)#以reader讀取模式,開啟名為cookies.txt的檔案。

cookies_dict = json.loads(cookies_txt.read())

#呼叫json模組的loads函式,把字串轉成字典。

cookies = requests.utils.cookiejar_from_dict(cookies_dict)

#把轉成字典的cookies再轉成cookies本來的格式。

session.cookies = cookies

#獲取cookies:就是呼叫requests物件(session)的cookies屬性。

import requests, json

session = requests.session(

)headers =

defcookies_read()

: cookies_txt =

open

('cookies.txt'

,'r'

) cookies_dict = json.loads(cookies_txt.read())

cookies = requests.utils.cookiejar_from_dict(cookies_dict)

return

(cookies)

# 以上4行**,是cookies讀取。

defsign_in()

: url =

' 'data =

session.post(url, headers=headers, data=data)

cookies_dict = requests.utils.dict_from_cookiejar(session.cookies)

cookies_str = json.dumps(cookies_dict)

f =open

('cookies.txt'

,'w'

) f.write(cookies_str)

f.close(

)# 以上5行**,是cookies儲存。

defwrite_message()

: url_2 =

''data_2 =

return

(session.post(url_2, headers=headers, data=data_2)

)try

: session.cookies = cookies_read(

)except filenotfounderror:

sign_in(

)num = write_message(

)if num.status_code ==

200:

print

('成功啦!'

)else

: sign_in(

) num = write_message(

)

第八重關 泛化物品

泛化物品是一種思想 1 考慮到這樣一件物品,它並沒有固定的費用和價值,但是它的價值隨著你分配給它的費用而變化。2 在揹包容量為 v 的揹包問題中,泛化物品是乙個定義域為 3 泛化物品就是乙個陣列 題目 hdu 1712 題意非常簡潔 include includeusing namespace st...