目标
爬去cnkongqi.com上的气象数据,cnkongqi.com站点上包含全国每个城市的天气,空气质量等数据,这些数据每小时都会进行更新。我的目标是要将该站点的某一时间的气象数据全部抓取下来,并保存到数据库。
本次爬虫编写语言选用python,由于在下对python是小白,所以这个爬虫程序可以算是我的第一个完整的python爬虫。以前使用过java编写一些爬虫程序,爬去够某些小说网站的小说,所以对爬虫的原理有着一定的理解,根据该原理使用python进行实现。
分析
cnkongqi.com上的某一个城市的气象数据地址为:http://www.cnkongqi.com/pc/510100.htm ,每小时数据更新后地址不变。而且每个页面都包含一个城市目录,该站点没有单独的目录页,所以需要预先在本地创建城市数据页面目录。创建好城市目录后,即可进行遍历目录进行数据爬去和存储。如果需要不断的更新本地数据,只需要每小时执行一次便利代码即可。需要完成:
- 目录创建
- 遍历目录获取气象信息你
实现
- 使用urllib来获取目标页面html
- 使用Beautifulsoup解析html
- 使用pymysql进行数据存储
数据库设计
根据站点数据结构特点,设计了4张表:
- 省份目录 t_province
CREATE TABLE t_province
(
id INT(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
name VARCHAR(20)
);
- 城市目录 t_city
CREATE TABLE t_city
(
id INT(11) PRIMARY KEY NOT NULL,
name VARCHAR(30),
provinceId INT(11),
infoUrl VARCHAR(50),
updateTime TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL
);
- 城市气象数据 t_city_data
CREATE TABLE t_city_data
(
id INT(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
tq VARCHAR(5) COMMENT '天气',
wd FLOAT(5,2) COMMENT '温度 。C',
sd FLOAT(5,2) COMMENT