资料内容:
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 所示。