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

2.3 技术准备

2.3.1 技术概览

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模块的使用,以确保读者可以顺利完成本项目。

2.3.2 random模块的使用

random模块用于生成各种分布的伪随机数,支持根据不同的实数分布生成随机值,如生成指定范围的整数、浮点数或序列。random模块的常用方法、功能及举例如表2.2所示。

表2.2 random模块的常用方法、功能及举例

例如,本项目使用random模块的choice()方法抽取一个随机请求头信息,代码如下:

2.3.3 time模块的使用

time模块提供了Python中各种与时间处理相关的方法,该模块中对于时间表示的格式有如下3种:

Timestamp(时间戳):表示从1970年1月1日00:00:00开始按秒计算的偏移量。

struct_time(时间元组):包含9个元素。分别为年、月、日、时、分、秒、一周中的第几日、一年中的第几日、夏令时标志。

format time(格式化时间字符串):通过格式化结构使时间更具可读性,支持自定义格式和固定格式。

time模块的常用方法及其说明如表2.3所示。

表2.3 time模块的常用方法及其说明

例如,本项目使用time模块的sleep()方法实现等待操作完成的功能,代码如下:

2.3.4 requests_html模块的使用

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模块进行网络请求和页面解析时,可以处理可能发生的异常,以确保程序的健壮性,代码如下: d8bRypnq8G6mGrslTKhPyC1YOcylbHkuWTTvGGD/+QdsBPcEBYQt3wtZKGe3VItE

点击中间区域
呼出菜单
上一章
目录
下一章
×