py爬虫基础范例——获取空气指数aqi

回复
blindlight
帖子: 98
注册时间: 周四 3月 30, 2017 00:03

py爬虫基础范例——获取空气指数aqi

帖子 blindlight »

在坛主DT27亲自指导下,完全根据坛主放出的代码更改。
坛主放的代码适用于全地区,改编代码可根据情况选择监测点。

代码: 全选

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import urllib
import urllib2
import re

#Domoticz服务器
domoticzserver = "127.0.0.1:8080"
aqiidx='137'
pm25idx='138'
pm10idx='139'
#目标网页
aqiurl = 'http://www.pm25.com/city/mon/aqi/%E4%B8%8A%E6%B5%B7/%E8%99%B9%E5%8F%A3.html'
pm25url = 'http://www.pm25.com/city/mon/pm2_5/%E4%B8%8A%E6%B5%B7/%E8%99%B9%E5%8F%A3.html'
pm10url = 'http://www.pm25.com/city/mon/pm10/%E4%B8%8A%E6%B5%B7/%E8%99%B9%E5%8F%A3.html'

#此方法向Domoticz服务器发送请求
def domoticzrequest (url):
    request = urllib2.Request(url)
    response = urllib2.urlopen(request)
    return response.read()

#此方法用于提取字符串中的数字
def OnlyNum(s,oth=''):
    s2 = s.lower();
    fomart = '0123456789'
    for c in s2:
        if not c in fomart:
            s = s.replace(c,'');
    return s;

def getairquality(url):
	results=urllib2.urlopen(url).read()
	data = re.findall(r"data:[[\d+,]+]", results)
	data = data[0]
	l24 = data.split(',')
	airquality=OnlyNum(l24[23],oth='')
	return airquality

aqi=getairquality(aqiurl)
pm25=getairquality(pm25url)
pm10=getairquality(pm10url)

#将空气质量指数发送到domoticz
domoticzrequest("http://"+domoticzserver+"/json.htm?type=command&param=udevice&idx="+aqiidx+"&nvalue=0&svalue="+aqi)

#将pm2.5浓度发送到domoticz
domoticzrequest("http://"+domoticzserver+"/json.htm?type=command&param=udevice&idx="+pm25idx+"&nvalue=0&svalue="+pm25)

#将pm10浓度发送到domoticz
domoticzrequest("http://"+domoticzserver+"/json.htm?type=command&param=udevice&idx="+pm10idx+"&nvalue=0&svalue="+pm10)
所要更改的
  • domoticz服务器信息
  • 3个设备的idx(字符串)
ps 树莓派基础计划任务 命令crontab -e 具体怎么问度娘 这个脚本设置了半小时运行一次
头像
DT27
帖子: 345
注册时间: 周四 3月 30, 2017 08:54
Gender:

Re: py爬虫基础范例——获取空气指数aqi

帖子 DT27 »

url中文转码用urllib.quote(url)
为防止开头的冒号也被转码,需要把'http://'隔出来。

代码: 全选

#目标网页
aqiurl = 'http://'+urllib.quote('www.pm25.com/city/mon/aqi/上海/虹口.html')
pm25url = 'http://'+urllib.quote('www.pm25.com/city/mon/pm2_5/上海/虹口.html')
pm10url = 'http://'+urllib.quote('www.pm25.com/city/mon/pm10/上海/虹口.html')
测试:
屏幕快照 2017-06-02 08.59.44.jpg
屏幕快照 2017-06-02 08.59.44.jpg (29.43 KiB) 查看 11713 次
vonzeng
帖子: 27
注册时间: 周二 6月 06, 2017 12:38

Re: py爬虫基础范例——获取空气指数aqi

帖子 vonzeng »

点个赞!
回复