Python实现抓取城市的PM2.5浓度和排名


Posted in Python onMarch 19, 2015

主机环境:(Python2.7.9 / Win8_64 / bs4)

利用BeautifulSoup4来抓取 www.pm25.com 上的PM2.5数据,之所以抓取这个网站,是因为上面有城市PM2.5浓度排名(其实真正的原因是,它是百度搜PM2.5出来的第一个网站!)

程序里只对比了两个城市,所以多线程的速度提升并不是很明显,大家可以弄10个城市并开10个线程试试。

最后吐槽一下:上海的空气质量怎么这么差!!!

PM25.py

#!/usr/bin/env python

# -*- coding: utf-8 -*-

# by ustcwq

import urllib2

import threading

from time import ctime

from bs4 import BeautifulSoup

def getPM25(cityname):

    site = 'http://www.pm25.com/' + cityname + '.html'

    html = urllib2.urlopen(site)

    soup = BeautifulSoup(html)

    city = soup.find(class_ = 'bi_loaction_city')   # 城市名称

    aqi = soup.find("a",{"class","bi_aqiarea_num"})  # AQI指数

    quality = soup.select(".bi_aqiarea_right span")  # 空气质量等级

    result = soup.find("div",class_ ='bi_aqiarea_bottom')   # 空气质量描述

    print city.text + u'AQI指数:' + aqi.text + u'\n空气质量:' + quality[0].text + result.text

    print '*'*20 + ctime() + '*'*20

def one_thread():   # 单线程

    print 'One_thread Start: ' + ctime() + '\n'

    getPM25('hefei')

    getPM25('shanghai')

def two_thread():   # 多线程

    print 'Two_thread Start: ' + ctime() + '\n'

    threads = []

    t1 = threading.Thread(target=getPM25,args=('hefei',))

    threads.append(t1)

    t2 = threading.Thread(target=getPM25,args=('shanghai',))

    threads.append(t2)

    for t in threads:

        # t.setDaemon(True)

        t.start()

if __name__ == '__main__':

    one_thread()

    print '\n' * 2

    two_thread()

Python实现抓取城市的PM2.5浓度和排名

Python实现抓取城市的PM2.5浓度和排名

以上就是本文所述的全部内容了,希望大家能够喜欢。

Python 相关文章推荐
将Django框架和遗留的Web应用集成的方法
Jul 24 Python
PyQt5 pyqt多线程操作入门
May 05 Python
python之信息加密题目详解
Jun 26 Python
python+tkinter实现学生管理系统
Aug 20 Python
python内置模块collections知识点总结
Dec 19 Python
Python类如何定义私有变量
Feb 03 Python
Tensorflow进行多维矩阵的拆分与拼接实例
Feb 07 Python
python识别验证码图片实例详解
Feb 17 Python
python用WxPython库实现无边框窗体和透明窗体实现方法详解
Feb 21 Python
Python如何操作docker redis过程解析
Aug 10 Python
如何利用pycharm进行代码更新比较
Nov 04 Python
Python pyecharts绘制条形图详解
Apr 02 Python
python在windows命令行下输出彩色文字的方法
Mar 19 #Python
python通过colorama模块在控制台输出彩色文字的方法
Mar 19 #Python
python实现颜色rgb和hex相互转换的函数
Mar 19 #Python
python实现从一组颜色中找出与给定颜色最接近颜色的方法
Mar 19 #Python
python遍历类中所有成员的方法
Mar 18 #Python
python获取图片颜色信息的方法
Mar 18 #Python
Python调用C语言开发的共享库方法实例
Mar 18 #Python
You might like
php找出指定范围内回文数且平方根也是回文数的方法
2015/03/23 PHP
PHP如何通过传引用的思想实现无限分类(代码简单)
2015/10/13 PHP
php将文件夹打包成zip文件的简单实现方法
2016/10/04 PHP
javascript cookie操作类的实现代码小结附使用方法
2010/06/02 Javascript
一个获取第n个元素节点的js函数
2014/09/02 Javascript
js实现创建删除html元素小结
2015/09/30 Javascript
浅谈Javascript中的函数、this以及原型
2016/10/09 Javascript
Chrome不支持showModalDialog模态对话框和无法返回returnValue问题的解决方法
2016/10/30 Javascript
JS基于递归算法实现1,2,3,4,5,6,7,8,9倒序放入数组中的方法
2017/01/03 Javascript
ES6使用let命令更简单的实现块级作用域实例分析
2017/03/31 Javascript
Vue实现动态显示textarea剩余字数
2017/05/22 Javascript
Vue.js表单标签中的单选按钮、复选按钮和下拉列表的取值问题
2017/11/22 Javascript
Vue-不允许嵌套式的渲染方法
2018/09/13 Javascript
详解webpack打包nodejs项目(前端代码)
2018/09/19 NodeJs
vue中datepicker的使用教程实例代码详解
2019/07/08 Javascript
js中forEach,for in,for of循环的用法示例小结
2020/03/14 Javascript
[01:02:20]Mineski vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
python使用 HTMLTestRunner.py生成测试报告
2017/10/20 Python
python3中函数参数的四种简单用法
2018/07/09 Python
Python Django切换MySQL数据库实例详解
2019/07/16 Python
python多进程下实现日志记录按时间分割
2019/07/22 Python
django orm模块中的 is_delete用法
2020/05/20 Python
通俗易懂了解Python装饰器原理
2020/09/17 Python
CSS3+DIV实现漂亮的动画彩色标签
2016/06/16 HTML / CSS
网页布局中CSS样式无效的十个重要原因详解
2017/08/10 HTML / CSS
Spartoo英国:欧洲最大的网上鞋店
2016/09/13 全球购物
军训自我鉴定
2013/12/14 职场文书
导游实习生自荐书
2014/01/28 职场文书
委托培训协议书
2014/11/17 职场文书
土地租赁协议书
2015/01/29 职场文书
遗嘱范文
2015/08/07 职场文书
廉政党课工作报告案例
2019/06/21 职场文书
5分钟教你docker安装启动redis全教程(全新方式)
2021/05/29 Redis
mysql的单列多值存储实例详解
2022/04/05 MySQL
关于Python中进度条的六个实用技巧分享
2022/04/05 Python
MyBatis配置文件解析与MyBatis实例演示
2022/04/07 Java/Android