3、爬蟲-selenium-獲取使用者cookie的使用

little小新發表於2024-07-01

注意這裡使用的是chrom瀏覽器、所以要下載對應版本的chromdriver.exe工具、且放在同一檔案目錄下或者在電腦中設定環境變數、或者放在pycharm安裝目錄下的 E:\installDir\python\Scripts 路徑下即可

chromedriver-120.exe
from selenium import webdriver

#webdriver.ChromeOptions() 此物件用於配置瀏覽器的選項、這裡的detach=true意味著當瀏覽器關閉時、瀏覽器程序繼續在後臺執行
options = webdriver.ChromeOptions()
options.add_experimental_option("detach", True)
driver = webdriver.Chrome(options=options)
#driver = webdriver.Chrome(executable_path="./chromedriver-120.exe", options=options)

#url1 = "https://www.xinpianchang.com/discover/article-1-0?utm_source=xpcWeb&utm_medium=navigatorCate&index=4"
url2 = "https://www.baidu.com"

#driver.get(url1)
driver.get(url2)

#回到上一個頁面
#driver.back()
#進到下一個頁面
#driver.forward()

#和頁面中的元素互動
#先宣告要操作的元素、這裡的id和kw對應的是百度裡的搜尋欄裡的對應的id=kw值
#建立元素物件
send_k = driver.find_element("id","kw")     #這裡的find_element()主要是以id來定義元素框的位置
#找到百度中的搜尋框後要對搜尋框操作、send_key傳送值
send_k.send_keys("北京")
#傳送搜尋的內容後要點選搜尋按鈕、到百度裡找到對應的id和value
click_k = driver.find_element("id","su")
click_k.click()     #點選

#獲取頁面中的內容、儲存到變數  、獲取html原始碼
content = driver.page_source
print(content)


#cookie的API、用來控制瀏覽器賬戶以及一些快取的API
driver.get_cookie()


#deriver.close()

cookie的使用

獲取cookie操作

get_cookies.py

"""
獲取網頁登入的cookie
"""

from selenium import webdriver
import json
options = webdriver.ChromeOptions()
options.add_experimental_option("detach", True) #防止網頁自動關閉
driver = webdriver.Chrome(options=options)

#新電影網
url = "https://passport.xinpianchang.com/login?redirect_uri=https%3A%2F%2Fwww.xinpianchang.com%2Fuser%2F14390601&mode=quick&type=phone"

#注意在開啟網頁後要先手動登入
driver.get(url)

#獲取cookie、是一個列表
cookies =driver.get_cookies()
#將獲取的cookies轉化為字串格式序列化
cookies_str = json.dumps(cookies)
#將拿到的cookies儲存在cookies.txt文字中
with open("cookies1.txt", "w", encoding="utf-8") as file:
    file.write(cookies_str)

使用已獲取到的cookie進行登入

"""
在獲取到了cookie前提下實現自動登入
"""
from selenium import webdriver
import json
options = webdriver.ChromeOptions()
options.add_experimental_option("detach", True)
driver = webdriver.Chrome(options=options)

#開啟網頁
#url = "https://kyfw.12306.cn/otn/resources/login.html"
url = "https://passport.xinpianchang.com/login?redirect_uri=https%3A%2F%2Fwww.xinpianchang.com%2Fuser%2F14390601&mode=quick&type=phone"
driver.get(url)

#讀取cookie
with open("cookies1.txt", "r", encoding="utf-8") as file:
    cookies_str = file.read()

#將字串反序列化為json格式
cookies = json.loads(cookies_str)

#將cookie注入瀏覽器、且要迭代一個一個注入
for cookie in cookies:
    driver.add_cookie(cookie)

#登入後再開啟首頁、檢視是否已經登入
driver.get("https://www.xinpianchang.com/")

相關文章