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