这里我用到的库和模块比较多,所有代码量比较少。缺少相关模块的同学自行下载应用即可,这里推荐通过镜像网址(pip install -i https://pypi.tuna.tsinghua.edu.cn/simple requests)下载,下载速度会快很多,具体使用方法请参考https://mirrors.tuna.tsinghua.edu.cn/help/pypi/ 1. 引入该项目需要用到的相关库和模块
2. 接下来写get_all_cities()函数,用来获取所有城市名称及url 其实这里应该先写主函数,不过为了演示效果就先写了get_all_cities()函数。 2.1 创建一个空列表city_list 2.2 通过requests.get(url)构造一个向服务器请求资源的Request对象,设置请求超时时间为60s。 2.3 这里我们指定Beautiful的解析器为“html.parser” 2.4 接下来就要爬取网站中所有城市名称了。以北京市为例,我们首先需要打开待爬取网站并查看网页代码,可以看到“北京”这个城市是隶属于第一个“bottom”,接下来就是将所有“bottom”下的城市全部获取,这里我们使用BeautifulSoup来获取。 2.5 将获取到的城市名称写入列表city_list中,具体代码如下:
2.6 我们先来看一下运行该段函数代码的结果是什么样的。 2.7 可以看到已经成功读取到该网站所有城市名称了。
3.下面写get_city_aqi()函数,用来获取所有城市的AQI值 3.1 以北京市为例,如下图,我们需要获取的数据是AQI对应的44、PM2.5/1h对应的25、PM10/1h对应的43、CO/1h对应的0.5…; 3.2 接下来就是如何获取具体的“value”和“caption”了。 3.3 我们先用requests.get(url)构造一个向服务器请求资源的Reques,请求超时时间设置为60s。同样指定Beautiful的解析器为“html.parser”。接着新建一个div_list用来存放按内容查找到的节点的数值。然后创建一个空的city_aqi列表来存放for循环获取到的所有AQI、PM2.5/1h、PM10/1h、CO/1h、NO2/1h、O3/1h、O3/8h、SO2/1h,最后返回并通过.append写入列表。
具体代码如下: