购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.3 技术准备

1.3.1 技术概览

re正则表达式:正则表达式(regular expression,常简写为regex或者re),又称规则表达式,它通常被用于检索和替换符合某些规则的文本。在Python中,可以使用re模块实现正则表达式操作。具体实现时,可以使用re模块提供的方法(如search()、match()、findall()等)进行字符串处理,也可以先使用re模块的compile()方法将模式字符串转换为正则表达式对象,再使用该正则表达式对象的相关方法来操作字符串。例如,本项目在破解滑动拼图验证码时使用正则表达式对页面中的标签进行匹配,代码如下:

# 获取空缺滑块样式
verified_style = driver.find_element(By.XPATH,
    '/html/body/div/div[2]/div[1]/div[2]').get_attribute('style')
# 获取空缺滑块 left 值
verified_left =float(re.findall('left: (.*?)px;',verified_style)[0])
# 获取图形滑块 left 值
verify_left =float(re.findall('left: (.*?)px;',verify_style)[0])

requests模块:requests是Python中用于实现HTTP请求的第三方模块。在使用该模块之前,需要通过执行pip install requests命令进行安装。例如,本项目在破解字符验证码时,使用requests模块的get()函数向指定网址发送网络请求,代码如下:

BeautifulSoup(bs4):BeautifulSoup(bs4)是一个用于从HTML和XML文件中提取数据的Python库。BeautifulSoup(bs4)提供了一些简单的函数,用于处理导航、搜索、修改分析树等功能。例如,本项目使用BeautifulSoup(bs4)模块对验证码的HTML页面进行解析,以获取验证码图片,代码如下:

有关re正则表达式、requests模块和BeautifulSoup(bs4)模块的知识在《Python从入门到精通(第3版)》中有详细讲解,读者如果对这些知识不太熟悉,可以参考该书的相关章节。接下来,我们将对实现本项目时使用的其他主要技术点进行必要的介绍,包括Pillow模块的使用、tesserocr模块的使用、Selenium自动化测试工具的使用,以确保读者可以顺利完成本项目。

1.3.2 Pillow模块的使用

Pillow是一个开源的Python图像处理库,是Python Imaging Library(PIL)的一个更现代且持续得到维护的分支版本。由于PIL在较早版本的Python中已停止更新,Pillow作为其替代品而出现,并提供了对Python 3的全面支持。使用该模块之前,需要使用pip install Pillow命令进行安装,安装完成后即可使用该模块。

例如,下面的代码使用Pillow模块中的Image类的open()方法和show()方法分别打开和显示指定图片的原图。其中,Image类主要用于图像的基本操作,如打开、加载、保存、显示图像,以及进行图像模式转换、尺寸调整(缩放)、旋转、裁剪等。使用前,需要导入Image类,代码如下:

     from PIL import Image

然后使用open()方法创建一个图像对象,接下来就可以使用该对象调用其方法实现相应的功能了。例如,下面的代码用于打开并显示一张指定路径下的图片:

     img = Image.open(tppath + sender.text())
     img.show()

1.3.3 tesserocr模块的使用

tesserocr是一个第三方的Python模块,用于调用Tesseract OCR(optical character recognition,光学字符识别)引擎。Tesseract是由Google维护的一个开源OCR引擎,能够识别多种语言的文字,并支持多种输出格式。tesserocr提供了一种简单的方式来与Tesseract进行交互,特别适合于处理图像中的文字提取任务。在使用tesserocr模块前,需要安装Tesseract OCR引擎并配置环境变量,然后安装tesserocr模块,具体步骤如下:

(1)打开Tesseract OCR引擎的开源下载地址(https://github.com/UB-Mannheim/tesseract/wiki),选择与自己操作系统匹配的版本(这里以Windows 64位操作系统为例),如图1.2所示。

图1.2 下载Tesseract OCR引擎安装文件

(2)Tesseract OCR引擎安装文件下载完成后,直接双击并按照向导进行安装即可。

(3)配置Tesseract OCR引擎环境变量。打开计算机系统的“环境变量”对话框,在“系统变量”的Path变量中添加Tesseract OCR引擎的默认安装位置,如图1.3所示。

图1.3 配置Tesseract OCR引擎环境变量

(4)在“系统变量”中添加一个新的变量,命名为TESSDATA_PREFIX,该变量的路径指向Tesseract OCR引擎安装目录下的tessdata文件夹,如图1.4所示。

图1.4 新建TESSDATA_PREFIX环境变量

(5)将Tesseract OCR安装路径下的tessdata文件夹复制到本地的Python安装目录中,如图1.5所示。这样做主要是为了解决文字识别问题。

图1.5 将tessdata文件夹复制到Python安装目录下

(6)下载tesserocr模块的离线安装文件。打开tesserocr模块离线安装文件的开源下载地址https://github.com/simonflueckiger/tesserocr-windows_build/releases,选择与自己的Python版本相匹配的项进行下载,如图1.6所示。

图1.6 下载tesserocr模块的离线安装文件

(7)使用pip install命令安装tesserocr模块,命令如下:

     pip install tesserocr 模块离线安装文件所在位置(如:C:\tesserocr-2.7.1-cp312-cp312-win_amd64.whl)

完成以上步骤之后,就可以开始使用tesserocr模块了,例如,下面的代码展示了如何使用tesserocr模块从图像中提取文字,代码如下:

     # 导入必要的库
     import tesserocr
     from PIL import Image
     # 加载图像
     image = Image.open('path/to/image.png')
     # 执行 OCR
     text = tesserocr.image_to_text(image)
     print(text)

1.3.4 Selenium自动化测试工具的使用

Selenium是一个强大的自动化测试工具,主要用于Web应用程序的测试。它支持多种编程语言,包括Python、Java、C#等。借助Selenium,开发人员可以模拟用户的浏览器操作,如单击按钮、填写表单、导航页面等。这对于网页自动化测试、数据抓取和自动化任务非常有用。使用Selenium自动化测试工具的基本步骤如下:

(1)安装Selenium库,命令如下:

     pip install selenium

(2)安装WebDriver驱动。Selenium需要一个浏览器驱动程序(WebDriver)来控制浏览器。常用的浏览器及其对应的WebDriver驱动如下:

Chrome:ChromeDriver。

Firefox:GeckoDriver。

Edge:EdgeDriver。

Safari:SafariDriver(内置)。

例如,若要在Chrome浏览器中安装WebDriver驱动,则需要访问ChromeDriver的下载页面https://sites.google.com/a/chromium.org/chromedriver/downloads?spm=5176.28103460.0.0.77d75d27lMAa7x,下载与本机的Chrome浏览器版本匹配的ChromeDriver并进行安装。

说明

ChromeDriver的下载地址是Google官方提供的。在访问上述网址时,如果遇到无法打开的情况,读者可以通过正规渠道购买代理IP并进行相应设置后尝试重新访问。

例如,使用Selenium打开一个网页,然后在一个搜索框中输入文本,并提交搜索,代码如下: d8bRypnq8G6mGrslTKhPyC1YOcylbHkuWTTvGGD/+QdsBPcEBYQt3wtZKGe3VItE

     # 导入必要的库
     from selenium import webdriver
     from selenium.webdriver.common.by import By
     from selenium.webdriver.common.keys import Keys
     import time
     # 初始化 WebDriver
     driver_path = 'path/to/chromedriver'
     driver = webdriver.Chrome(executable_path=driver_path)
     # 打开网页
     driver.get('https://www.example.com')
     # 找到搜索框元素
     search_box = driver.find_element(By.NAME, 'q')
     # 输入搜索关键词
     search_box.send_keys('Selenium')
     # 模拟按下 Enter 键
     search_box.send_keys(Keys.RETURN)
     # 等待页面加载完成
     time.sleep(3)
     # 获取页面标题
     print(driver.title)
     # 获取页面源代码
     print(driver.page_source)
     # 关闭浏览器
     driver.quit()
点击中间区域
呼出菜单
上一章
目录
下一章
×