



os模块:os模块是Python内置的一个用于与操作系统和文件系统进行交互的模块。例如,在下载手机图片时,本项目使用os模块中的path子模块的exists()方法来判断指定路径是否存在,并使用os模块的mkdir()方法创建指定的文件夹,示例代码如下:
Python中操作MySQL数据库:在Python中操作MySQL数据库时,需要使用相应的模块来实现。Python中支持MySQL数据库的模块有很多,本项目使用最常用的PyMySQL模块。在使用该模块之前,需要使用pip install pymysql命令进行安装,然后通过connect()函数创建连接对象,并使用该对象的cursor()方法创建存储数据的游标对象,最后通过游标对象调用相应的方法对数据库进行操作。游标对象的常用方法及其说明如表2.1所示。
表2.1 常用方法及其说明
例如,本项目使用PyMySQL模块的connect()函数连接数据库,代码如下:
有关os模块和PyMySQL模块的知识在《Python从入门到精通(第3版)》中有详细讲解,读者如果对这些知识不太熟悉,可以参考该书的相关章节。接下来,我们对实现本项目时使用的其他主要技术点进行必要的介绍,包括random模块的使用、time模块的使用和requests_html模块的使用,以确保读者可以顺利完成本项目。
random模块用于生成各种分布的伪随机数,支持根据不同的实数分布生成随机值,如生成指定范围的整数、浮点数或序列。random模块的常用方法、功能及举例如表2.2所示。
表2.2 random模块的常用方法、功能及举例
例如,本项目使用random模块的choice()方法抽取一个随机请求头信息,代码如下:
time模块提供了Python中各种与时间处理相关的方法,该模块中对于时间表示的格式有如下3种:
Timestamp(时间戳):表示从1970年1月1日00:00:00开始按秒计算的偏移量。
struct_time(时间元组):包含9个元素。分别为年、月、日、时、分、秒、一周中的第几日、一年中的第几日、夏令时标志。
format time(格式化时间字符串):通过格式化结构使时间更具可读性,支持自定义格式和固定格式。
time模块的常用方法及其说明如表2.3所示。
表2.3 time模块的常用方法及其说明
例如,本项目使用time模块的sleep()方法实现等待操作完成的功能,代码如下:
requests_html模块是一个用于网络爬虫和网页解析的强大Python库。它基于requests和pyppeteer,可以发送HTTP请求、解析HTML内容、处理JavaScript渲染的页面。在使用requests_html模块之前,需要使用pip install命令进行安装:
pip install requests-html
安装完成后,就可以在Python代码中使用requests_html模块了。具体使用方法如下:
(1)导入requests_html模块:
from requests_html import HTMLSession
(2)使用HTMLSession创建一个新的会话对象:
session = HTMLSession()
(3)使用会话对象发送HTTP请求:
response = session.get('https://example.com')
(4)可以使用多种方法来解析返回的HTML内容,例如:
# 使用 CSS 选择器获取元素
element = response.html.find('#element-id', first=True)
# 获取元素的文本内容
text = element.text
# 获取元素的属性
attribute_value = element.attrs['href']
(5)处理JavaScript渲染的页面:requests_html模块可以自动处理JavaScript渲染的页面,只需要启用JavaScript支持即可。代码如下:
# 启用 JavaScript 支持
response = session.get('https://example.com', verify=False)
# 渲染页面
response.html.render()
# 解析渲染后的页面
element = response.html.find('#element-id', first=True)
(6)使用请求响应对象的submit()方法提交表单:
# 获取包含表单的页面
response = session.get('https://example.com/login')
# 填写表单
form = response.html.find('form', first=True)
form_input = form.find('input[name="username"]', first=True)
form_input.value = 'your_username'
form_input = form.find('input[name="password"]', first=True)
form_input.value = 'your_password'
# 提交表单
response = form.submit()
(7)使用会话对象的close()方法关闭会话:
session.close()
另外,在使用requests_html模块进行网络请求和页面解析时,可以处理可能发生的异常,以确保程序的健壮性,代码如下: