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

2.5 功能设计

2.5.1 分析手机数据网页中的分页规律

本项目以爬取中关村在线网站的手机数据为例进行讲解,网址为:https://detail.zol.com.cn/cell_phone_index/subcate57_0_list_0_0_1_2_0_1.html。网页效果如图2.3所示。

图2.3 确认要爬取的手机数据所在网页

查看当前手机网页所有页码数量,然后切换页码,确认请求地址中控制页码数量的关键参数,如图2.4所示。

图2.4 确认总页数与地址中的页码参数

2.5.2 分析手机详情页地址

在手机数据所在网页中,确认手机详情页地址在HTML代码中的标签位置,如图2.5所示。

图2.5 确认手机详情页地址在HTML代码中的标签位置

2.5.3 确认手机详情页中的各项信息对应的位置

在手机数据所在网页中选择一款手机,打开其详情页,然后在该详情页中确认手机的主标题、副标题、参考价格以及封面图片在HTML代码中的标签位置,如图2.6所示。

图2.6 确认指定信息在HTML代码中的标签位置

将手机详情页面向下滑动,然后分别获取手机的CPU、后置摄像头、前置摄像头、内存、电池、屏幕以及分辨率等信息所在HTML代码中的标签位置,如图2.7所示。

2.5.4 导入模块

分析完要爬取的网页后,接下来就可以编写程序实现网络爬虫功能了。首先,需要导入项目中用到的模块,代码如下:

2.5.5 定义公共变量

本项目需要定义请求地址、会话对象、MySQL数据库连接对象以及游标对象等公共变量,代码如下:

图2.7 确认手机相关信息在HTML代码中的标签位置

2.5.6 实现爬取数据并插入数据库功能

定义一个get_header()函数,用于获取随机请求头信息。代码如下:

定义一个get_info_url()函数,用于获取详情页的请求地址。代码如下:

定义一个sql_insert()函数,用于将爬取的手机数据添加到MySQL数据库中。代码如下:

定义一个get_info()函数,用于从手机详情页中获取手机的主标题、参考价格、副标题、封面图片地址、CPU、后置摄像头、前置摄像头、内存、电池、屏幕、分辨率等信息,并将这些信息添加到MySQL数据库中。get_info()函数实现代码如下:

2.5.7 实现下载手机图片功能

2.5.6节的get_info()函数中使用了一个download_img()函数。该函数为自定义函数,用于将手机图片下载到本地。具体实现时:首先判断保存图片的文件夹是否存在,如果不存在,则使用os.mkdir()方法创建该文件夹;然后使用open()方法和write()方法将图片保存到该文件夹中。download_img()函数实现代码如下:

2.5.8 定义程序入口

定义程序入口。在程序入口处:首先使用for循环遍历要爬取的手机网页对应的页数,并在for循环中调用get_info_url()函数获取详情页请求地址;然后调用get_info()函数获取手机详情信息,并将这些信息插入数据库中;最后关闭游标对象与数据库连接对象。代码如下: d8bRypnq8G6mGrslTKhPyC1YOcylbHkuWTTvGGD/+QdsBPcEBYQt3wtZKGe3VItE

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