
资料内容:
2.2 自动化爬虫系统的设计 
下面是该系统实现自动化爬虫功能的详细步骤及 
相应的 Python 代码。 
导入程序中所用到的 Python 标准库以及第三方 
库代码说明: 
Selenium:用于自动化浏览器操作,可以模拟用 
户在浏览器中的各种行为,如点击、输入等,常用于 
爬虫、测试和自动化任务。 
SSL:用于处理 SSL 证书,通过 ssl._create_default_ 
https_context = ssl._create_unverified_context 解决 SSL 
证书问题报错。 
keyboard:用于监听热键,实现功能函数的实时 
调用。 
threading:用于创建线程,实现多线程执行。 
re:Python 的正则表达式库,用于字符串的模式 
匹配和处理。 
bs4(BeautifulSoup):用于解析 HTML 和 XML 
文档,方便地从网页中提取数据。 
time:用于时间相关的操作,比如等待、计时等。 
undetected_chromedriver:是对 selenium 的扩展, 
用于绕过检测自动化测试的脚本而运行Chrome浏览器。 
Keys:Selenium 中的模块,用于模拟键盘按键。 
WebDriverWait 和 expected_conditions:selenium 
中的模块,用于等待页面元素加载。 
sys:Python 标准库,提供对 Python 运行时环境 
的访问。 
atexit:用于注册在程序退出之前执行的函数。 
colorama:一个用于在终端输出中添加颜色的库, 
可以让输出更加丰富和醒目 
库的导入部分代码如图 2 所示。 
图 2 库的导入 
使 用 Python 的 Selenium 库扩展 undetected_ 
chromedriver 来启动 Chrome 浏览器,并监听热键(F8 
键)来触发一个功能回调函数(hotkey_callback)。 
同时,注册一个在程序退出时关闭浏览器的回调函数 
(close_browser)。 
代码说明:使用 Python 的 Selenium 库的扩展 
undetected_chromedriver 来启动 Chrome 浏览器以实 
现绕过爬虫目标网页的“反爬虫机制”[6]。 
通过 driver.get() 方法导航到百度网页(https:// 
www.baidu.com)。方便用户操作。 
使用 keyboard 库(前提是已经导入 keyboard 库) 
监听热键 F8,并在按下 F8 时触发 hotkey_callback 回 
调函数(主要功能函数,获取、解析网页源码以及 
ChatGPT 交互等功能都包含其中,下文详细介绍)。 
创建 close_browser 函数用于关闭浏览器。在程序 
退出时,通过 atexit.register() 方法注册 close_browser 
函数,确保在程序退出前关闭浏览器。 
输出提示信息,告知用户按 F8 键开始工作,并 
提醒不要手动关闭程序的窗口,因为浏览器会在需要 
时自动退出。 
创建字典(命名为 window_dict)来存储已打开 
标签页的标题和句柄,方便标签页的控制切换。 
接下来是一个 while 循环,该循环会持续运行(直 
至回调函数因错误中断),用于监测新标签页的操作。 
跳出循环后,代码通过 time.sleep(1) 等待 1 秒, 
然后调用 sys.exit() 来退出程序。 
具体代码如图 3 所示。
 
                