爬蟲需要登陸怎么辦?這份python登陸代碼請收下


模擬登陸思路

 

通過selenium中的webdriver控制瀏覽器登錄目標網站,然后獲取模擬登陸需要的Cookie,再利用此Cookie來達到登錄的效果。本次我們使用webdriver來驅動火狐瀏覽器插件。在登錄網站時,cookie保存在發起請求的客戶端中,網站服務器利用cookie來區分不同的客戶端。cookie里面記錄了“訪問登錄后才能看到的頁面”這一行為的信息,含有能夠向服務器證明:“我剛才登錄過”。因此cookie可以用來標識客戶端的身份,以存儲它的信息。

登錄步驟

導入模塊

 

1 from selenium import webdriver
2 import requests
3 import json

 

啟動瀏覽器

通過webdriver驅動火狐瀏覽器,然后在加載將要訪問的目標網站

 

1 driver = webdriver.Firefox()
2 driver.get('目標網站')

 

點擊登錄

找到網頁中登錄按鈕所在的位置,通過瀏覽器模擬點擊打開登錄框,然后找到用戶名和密碼框的位置,輸入用戶名及密碼,在尋找按鈕以及密碼輸入框時可鼠標右鍵然后找到“查看元素”選項,點擊之后可在網頁源碼中尋找。

代碼如下:

 

 1 #清空登錄框
 2 driver.find_element_by_xpath("./*//input[@name='username']").clear()
 3 #自動填入登錄用戶名
 4 driver.find_element_by_xpath("./*//input[@name='username']").send_keys(user)
 5 #清空密碼框
 6 driver.find_element_by_xpath("./*//input[@name='password']").clear()
 7 #自動填入登錄密碼
 8 driver.find_element_by_xpath("./*//input[@name='password']").send_keys(password)
 9 time.sleep(8)
10 #點擊登錄按鈕進行登錄
11 driver.find_element_by_xpath("./*//button[@name='loginsubmit']").click()
12 time.sleep(10)

 

記錄cookie

經過上面幾步,如果沒有報錯的話就說明已經登錄成功了,接下來我們再次加載網頁獲取登錄cookie。

代碼如下:

1 driver.get('目標網站')
2 #獲取cookies
3 cookie_items = driver.get_cookies()
4 for cookie_item in cookie_items:
5     post[cookie_item['name']] = cookie_item['value']
6 cookie_str = json.dumps(post)
7 with open('cookie.txt''w', encoding='utf-8') as f:
8     f.write(cookie_str)
9 f.close()

通過cookie登錄

獲得cookie之后,模擬登陸就跟之前一樣用requests請求網站,只需要將cookie內容加到請求中即可。

代碼如下:

 

1 header = {"User-Agent""Mozilla/5.0 (Windows NT 6.1; WOW64;rv:53.0) Gecko/20100101 Firefox/53.0"}
2 with open('cookie.txt''r', encoding='utf-8') as f:
3     cookie = f.read()
4 cookies = json.loads(cookie)
5 res = requests.get(url=url, cookies=cookies, headers=header)

 

對於有些網站來說,cookie的生命期較長,所以在第一次登陸獲取cookie后,在以后模擬登陸時只需要調用此cookie即可,十分方便。

具體代碼如下:

 

 1 from selenium import webdriver
 2 import time
 3 import json
 4  
 5 user="用戶名"
 6 password="密碼"
 7  
 8 driver = webdriver.Firefox()
 9 driver.get('目標網站')
10 time.sleep(5)
11 driver.find_element_by_xpath("./*//button[@type='submit']").click()
12 print("正在輸入用戶名和密碼")
13 #清空登錄框
14 driver.find_element_by_xpath("./*//input[@name='username']").clear()
15 #自動填入登錄用戶名
16 driver.find_element_by_xpath("./*//input[@name='username']").send_keys(user)
17 #清空密碼框
18 driver.find_element_by_xpath("./*//input[@name='password']").clear()
19 #自動填入登錄密碼
20 driver.find_element_by_xpath("./*//input[@name='password']").send_keys(password)
21  
22 time.sleep(8)
23 #點擊登錄按鈕進行登錄
24 driver.find_element_by_xpath("./*//button[@name='loginsubmit']").click()
25 time.sleep(10)
26 driver.get('目標網站')
27 #獲取cookies
28 cookie_items = driver.get_cookies()
29  
30 #獲取到的cookies是列表形式,將cookies轉成json形式並存入本地名為cookie的文本中
31 for cookie_item in cookie_items:
32     post[cookie_item['name']] = cookie_item['value']
33 cookie_str = json.dumps(post)
34 with open('cookie.txt''w', encoding='utf-8') as f:
35     f.write(cookie_str)
36 f.close()
37 print("登錄完成")

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM