Python 模擬登陸神庫!集合了20+個平臺的模擬登陸腳本
Awesome-python-login-model 是一個國人開發(fā)的模擬登陸倉庫,在這個倉庫上有20幾個網(wǎng)站的模擬登陸腳本,你可以基于這個倉庫實現(xiàn)的代碼做簡易的修改,以實現(xiàn)自己的自動化功能。
倉庫地址:
https://github.com/Kr1s77/awesome-python-login-model
其支持模擬登陸的網(wǎng)站有:
蝦米音樂
Facebook模擬登錄
微博網(wǎng)頁版模擬登錄
QQZone模擬登錄
CSDN模擬登錄--已恢復
淘寶爬蟲--重構中
Baidu模擬登錄一
果殼爬蟲程序
JingDong 模擬登錄和自動申請京東試用
163mail--已恢復
拉鉤模擬登錄--已失效
Bilibili模擬登錄
豆瓣
Baidu2模擬登錄
獵聘網(wǎng)模擬登錄
微信網(wǎng)頁版登錄并獲取好友列表
Github模擬登錄兩種解決方案都可行
爬取圖蟲想要的圖片
網(wǎng)易云音樂downloader
糗事百科爬蟲
淘寶登陸-訪問
可以看到,支持的站點非常多,大家可以從他倉庫里學到許多關于模擬登陸的方法,簡單的來講,大多數(shù)腳本采用的是直接登錄的方式,有的網(wǎng)站直接登錄難度很大,比如qq空間,bilibili等使用 selenium + webdriver 的方式就相對輕松一些。
一些網(wǎng)站雖然在登錄的時候采用的是selenium的方式,為了效率,我們可以在登錄過后得到的cookie維護起來,然后調(diào)用 requests 或者 scrapy 等進行數(shù)據(jù)采集,這樣數(shù)據(jù)采集的速度可以得到保證。
如果你無法登陸 Github 克隆它的倉庫,請在 Python 實用寶典 后臺回復 Awesome-python-login-model 下載倉庫代碼。
1.準備
開始之前,你要確保Python和pip已經(jīng)成功安裝在電腦上,如果沒有,可以訪問這篇文章:超詳細Python安裝指南 進行安裝。
(可選1) 如果你用Python的目的是數(shù)據(jù)分析,可以直接安裝Anaconda:Python數(shù)據(jù)分析與挖掘好幫手—Anaconda,它內(nèi)置了Python和pip.
(可選2) 此外,推薦大家用VSCode編輯器,它有許多的優(yōu)點:Python 編程的最好搭檔—VSCode 詳細指南。
使用這個倉庫的時候,你需要按需安裝并加載相應的模塊,不過無非就是以下幾個模塊:
pip install beautifulsoup4
pip install selenium
pip install pyppeteer
pip install pillow
上面的模塊你并不需要全部安裝,最好是找到你所需要模擬登陸的網(wǎng)站的腳本,查看它頭部 import 了什么模塊,按需安裝即可。
2.簡單的模擬登陸實戰(zhàn)
下面來看一個拉勾網(wǎng)的登陸腳本:
從頭部的 import 引入來看,你需要安裝并加載 Beautifulsoup4 模塊:
pip install beautifulsoup4
安裝完成后,終端需要 cd 進入此腳本所在文件夾,執(zhí)行腳本:
python Lagou.py
運行腳本后需要你輸入一定的信息進行登陸,做得非常方便和貼心:

登陸完成后,你就可以做任何你想要做的事情了。
3.基于selenium的模擬登陸
有些網(wǎng)站的爬取沒有那么簡單,他們會做權限校驗、會做反爬機制。這種情況下,我們可以用selenium解決一些比較困難和復雜的登陸場景。
基于selenium的模擬登陸稍微復雜一點,你需要設置chromedriver的路徑到環(huán)境變量中。如果你沒有設置,運行登陸腳本的時候會出現(xiàn)以下錯誤:

怎么下載并設置 Chromedriver 到環(huán)境變量里呢?你可以在這里下載到最新版的Chromedriver:
https://chromedriver.chromium.org/
現(xiàn)在最新版 Chromedriver 版本號到了 91.0.4472.101,下載鏈接如下:
https://chromedriver.storage.googleapis.com/index.html?path=91.0.4472.101

可以看到,每個系統(tǒng)需要下載的 Chromedriver 版本不一樣,請對應你的系統(tǒng)下載指定的版本即可。
對于macOS系統(tǒng)而言,mac64 和 mac_m1指的是使用了不同芯片的Mac筆記本,你可以在Mac上,單擊菜單欄左上角的[Apple]圖標,然后選擇“關于本機”選項??吹饺缦聦懼酒?Apple M1 則應該下載mac_m1版本。

如果你的網(wǎng)絡存在問題無法下載,沒關系,關注 Python實用寶典 公眾號,后臺回復 Chromedriver 即可下載,我已經(jīng)把這4個版本放到了國內(nèi)網(wǎng)盤上。
下載 Chromedriver 完成后,你還需要設置環(huán)境變量
(macOS 系統(tǒng)) 請這樣設置環(huán)境變量:
1. 把解壓得到的 Chromedriver 放到一個你不會經(jīng)常變動的路徑
如 /usr/local/bin/ ,你需要 Command+空格 輸入并打開終端(Terminal),執(zhí)行以下命令:
cd /usr/local/bin/open .
然后將 Chromedriver 拖入,就能成功將 Chromedriver 放入其中。
2.添加環(huán)境變量
在終端輸入下列命令就能添加到環(huán)境變量:
export PATH=$PATH:/usr/local/bin/chromedriver
執(zhí)行完這一步,恭喜你成功在 macOS 上安裝了 Chromedriver.
(Windows 系統(tǒng)) 請這樣設置環(huán)境變量:
1.在左下角搜索環(huán)境變量,打開“編輯系統(tǒng)環(huán)境變量”的選項:

2.設置 Chromedriver 環(huán)境變量:

將你的 chromedriver 所在目錄放入到 PATH 變量中,如圖所示。比如我的 chromedriver.exe 的路徑是 C:\Users\83493\Documents\bin\chromedriver.exe 那么此處就應該填寫 C:\Users\83493\Documents\bin 路徑。
設置完成后,你便成功在 Windows 上安裝了 Chromedriver. 另外請注意設置后要重啟終端或CMD讓環(huán)境變量生效。
另外如果你在使用 Chromedriver 的時候出現(xiàn)了類似于以下的報錯,不要慌:

這是由于當前 Chromedriver 版本是91, 而你現(xiàn)有的 Chrome 版本是 90 造成的,升級Chrome即可解決問題。
完成selenium的基本配置后,我們可以嘗試運行QQ空間模擬登陸:
進入項目文件夾的qqzone文件夾:
cd awesome-python-login-model\qqzone
然后直接運行 qq_zone.py 文件:
python qq_zone.py
此時會彈出一個瀏覽器并讓你輸入信息:

輸入信息后,就會正常走登陸流程:

看到如上的界面,說明登陸完成,此時Cookie什么的都已經(jīng)被設定完畢,你可以把Cookie存下來,并做任何你想做的事情了。
如果你愿意研究作者的代碼,你會發(fā)現(xiàn)其實很簡單:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
info:
author:CriseLYJ
github:https://github.com/CriseLYJ/
update_time:2019-3-7
"""
import time # 用來延時
from selenium import webdriver
driver = webdriver.Chrome() # 選擇瀏覽器,此處我選擇的Chrome
QQ_NUMBER = input('請輸入你的QQ號')
PASSWORD = input('請輸入你的QQ密碼')
driver.get('http://i.qq.com/')
driver.switch_to.frame('login_frame')
driver.find_element_by_id('switcher_plogin').click()
driver.find_element_by_name('u').clear()
driver.find_element_by_name('u').send_keys(QQ_NUMBER) # 此處輸入你的QQ號
driver.find_element_by_name('p').clear()
driver.find_element_by_name('p').send_keys(PASSWORD) # 此處輸入你的QQ密碼
driver.execute_script("document.getElementById('login_button').parentNode.hidefocus=false;")
driver.find_element_by_xpath('//*[@id="loginform"]/div[4]/a').click()
driver.find_element_by_id('login_button').click()
time.sleep(10) # 因為我曾經(jīng)是QQ會員,所以每次登陸時都會提醒我要不要再續(xù)費的彈窗...
driver.find_element_by_id('dialog_button_1').click() # 這個地方是我把那個彈窗給點擊了,配合上面的延時用的,延時是等待那個彈窗出現(xiàn),然后此處點擊取消
btns = driver.find_elements_by_css_selector('a.item.qz_like_btn_v3') # 此處是CSS選擇器
for btn in btns:
btn.click()
簡單的講,代碼一共分了4個步驟,分別如下:
1.讓使用者輸入QQ號和密碼。
2.切換瀏覽器焦點到登錄框中,選擇元素輸入賬號和密碼。
3.為了顯示登錄按鈕,執(zhí)行了以下腳本:
driver.execute_script("document.getElementById('login_button').parentNode.hidefocus=false;")
4.點擊確認按鈕,完成登錄。
可以看到,基于 Selenium 的自動化控制一點都不難,一旦熟悉控制流程及相應的方法后應該如魚得水。只要你度過一開始安裝 Chromedriver 時的繁瑣階段,后面代碼開發(fā)時多參考他人的代碼,Selenium這個自動化工具是可以被熟練掌握的。
總而言之,Awesome-python-login-model 這個模擬登陸的代碼庫,可以給你帶來不少的便利,你可以直接基于它提供的登陸腳本開發(fā),也可以參考這些腳本自己寫一個其他網(wǎng)站的模擬登陸腳本,并給作者提交PR。
我們的文章到此就結束啦,如果你喜歡今天的Python 實戰(zhàn)教程,請持續(xù)關注Python實用寶典。
有任何問題,可以在公眾號后臺回復:加群,回答相應紅字驗證信息,進入互助群詢問。
原創(chuàng)不易,希望你能在下面點個贊和在看支持我繼續(xù)創(chuàng)作,謝謝!
點擊下方閱讀原文可獲得更好的閱讀體驗
Python實用寶典 (pythondict.com)
不只是一個寶典
歡迎關注公眾號:Python實用寶典
