Python知識(shí)分享網(wǎng) - 專業(yè)的Python學(xué)習(xí)網(wǎng)站 學(xué)Python,上Python222
融合ChatGPT的智能化 Selenium網(wǎng)絡(luò)爬蟲(chóng)設(shè)計(jì)與實(shí)現(xiàn) PDF 下載
匿名網(wǎng)友發(fā)布于:2024-09-02 09:43:03
(侵權(quán)舉報(bào))
(假如點(diǎn)擊沒(méi)反應(yīng),多刷新兩次就OK!)

融合ChatGPT的智能化 Selenium網(wǎng)絡(luò)爬蟲(chóng)設(shè)計(jì)與實(shí)現(xiàn) PDF 下載 圖1

 

 

資料內(nèi)容:

 

 
2.2 自動(dòng)化爬蟲(chóng)系統(tǒng)的設(shè)計(jì)
下面是該系統(tǒng)實(shí)現(xiàn)自動(dòng)化爬蟲(chóng)功能的詳細(xì)步驟及
相應(yīng)的 Python 代碼。
導(dǎo)入程序中所用到的 Python 標(biāo)準(zhǔn)庫(kù)以及第三方
庫(kù)代碼說(shuō)明
Selenium用于自動(dòng)化瀏覽器操作,可以模擬用
戶在瀏覽器中的各種行為,如點(diǎn)擊輸入等,常用于
爬蟲(chóng)、測(cè)試和自動(dòng)化任務(wù)。
SSL用于處理 SSL 證書(shū),通過(guò) ssl._create_default_
https_context = ssl._create_unverified_context 解決 SSL
證書(shū)問(wèn)題報(bào)錯(cuò)。
keyboard用于監(jiān)聽(tīng)熱鍵,實(shí)現(xiàn)功能函數(shù)的實(shí)時(shí)
調(diào)用。
threading用于創(chuàng)建線程,實(shí)現(xiàn)多線程執(zhí)行。
rePython 的正則表達(dá)式庫(kù),用于字符串的模式
匹配和處理。
bs4BeautifulSoup):用于解析 HTML XML
文檔方便地從網(wǎng)頁(yè)中提取數(shù)據(jù)。
time用于時(shí)間相關(guān)的操作,比如等待、計(jì)時(shí)等。
undetected_chromedriver是對(duì) selenium 的擴(kuò)展,
用于繞過(guò)檢測(cè)自動(dòng)化測(cè)試的腳本而運(yùn)行Chrome瀏覽器。
KeysSelenium 中的模塊,用于模擬鍵盤按鍵。
WebDriverWait expected_conditionsselenium
中的模塊,用于等待頁(yè)面元素加載
sysPython 標(biāo)準(zhǔn)庫(kù),提供對(duì) Python 運(yùn)行時(shí)環(huán)境
的訪問(wèn)。
atexit用于注冊(cè)在程序退出之前執(zhí)行的函數(shù)。
colorama一個(gè)用于在終端輸出中添加顏色的庫(kù),
可以讓輸出更加豐富和醒目
庫(kù)的導(dǎo)入部分代碼如圖 2 所示。
圖 2 庫(kù)的導(dǎo)入
使 用 Python Selenium 庫(kù)擴(kuò)展 undetected_
chromedriver 來(lái)啟動(dòng) Chrome 瀏覽器,并監(jiān)聽(tīng)熱鍵F8
來(lái)觸發(fā)一個(gè)功能回調(diào)函數(shù)hotkey_callback)。
同時(shí),注冊(cè)一個(gè)在程序退出時(shí)關(guān)閉瀏覽器的回調(diào)函數(shù)
close_browser)。
代碼說(shuō)明使用 Python Selenium 庫(kù)的擴(kuò)展
undetected_chromedriver 來(lái)啟動(dòng) Chrome 瀏覽器以實(shí)
現(xiàn)繞過(guò)爬蟲(chóng)目標(biāo)網(wǎng)頁(yè)的反爬蟲(chóng)機(jī)制[6]。
通過(guò) driver.get() 方法導(dǎo)航到百度網(wǎng)頁(yè)https://
www.baidu.com)。方便用戶操作
使用 keyboard 庫(kù)前提是已經(jīng)導(dǎo)入 keyboard 庫(kù)
監(jiān)聽(tīng)熱鍵 F8,并在按下 F8 時(shí)觸發(fā) hotkey_callback
調(diào)函數(shù)主要功能函數(shù),獲取、解析網(wǎng)頁(yè)源碼以及
ChatGPT 交互等功能都包含其中,下文詳細(xì)介紹)。
創(chuàng)建 close_browser 函數(shù)用于關(guān)閉瀏覽器。在程序
退出時(shí),通過(guò) atexit.register() 方法注冊(cè) close_browser
函數(shù),確保在程序退出前關(guān)閉瀏覽器。
輸出提示信息,告知用戶按 F8 鍵開(kāi)始工作
提醒不要手動(dòng)關(guān)閉程序的窗口,因?yàn)闉g覽器會(huì)在需要
時(shí)自動(dòng)退出
創(chuàng)建字典命名為 window_dict來(lái)存儲(chǔ)已打開(kāi)
標(biāo)簽頁(yè)的標(biāo)題和句柄,方便標(biāo)簽頁(yè)的控制切換。
接下來(lái)是一個(gè) while 循環(huán),該循環(huán)會(huì)持續(xù)運(yùn)行
至回調(diào)函數(shù)因錯(cuò)誤中斷),用于監(jiān)測(cè)新標(biāo)簽頁(yè)的操作。
跳出循環(huán)后代碼通過(guò) time.sleep(1) 等待 1 ,
然后調(diào)用 sys.exit() 來(lái)退出程序。
具體代碼如圖 3 所示。