基于Python的实时爬虫每小时PM2.5等污染物数据

01 # coding:utf-8
02 import threading
03 import urllib
04 import re,sys
05 import time
06 import hashlib
07 import os
08    
09    
10 sys.setdefaultencoding = 'utf-8'
11    
12    
13 def fetchdata(city):
14     print city
15     md5 = ''
16     while True:
17         temp='http://www.pm25.in/'+ city#爬虫的站为:www.pm25.in,只要之前IP没有被该网站封了,就可以爬,假如被封了请申请API
18         url = urllib.urlopen(temp)
19         text = url.read()
20    
21    
',text,re.S)#正则pm2.5等污染物数据
22         shuju = re.findall('(.*?)
23         data_time = re.findall("\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}",text,re.S)#正则寻找当前时间 例如,2016-04-13 20:10:00
24    
25    
26         md52 = hashlib.md5()
27         md52.update(data_time[0])
28    
29         if md52.hexdigest() == md5:
30             time.sleep(3600)#自动休眠,每一小时爬一次数据
31             continue
32         md5 = md52.hexdigest()
33         = 1
34         = 0
35         datas = []
36         tempdata = open('D:/Python33/py27/data/'+ city + '.txt','a')#在该路径下创建以城市命名的文件,以存储pm2.5数据
37         for each in shuju:
38             datas.append(each)
39             += 1
40             if i > 10:
41                 datas.append(data_time[0])
42                 = 1
43                 += 1
44                 tempdata.write(','.join(datas) + '\\n')
45                 datas = []
46            
47    
48            
49         tempdata.close()
50         print city
51         print data_time[0]
52         print time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))#显示当前时间
53         time.sleep(3600)
54    
55 if __name__ == "__main__":
56     file = open('D:/Python33/py27/data/city/cities.txt','r')#读取城市名字txt,每行为一个   名字
57     lines= file.readlines()
58     cities = []
59     threads = []
60     for line in lines:
61         cities.append(line.strip())
62            
63     for city in cities:
64         threads.append(threading.Thread(target = fetchdata,args =(city,)))
65    
66     for thread in threads:
67         thread.start()
68     for thread in threads:
69         thread.join()

文章来自源码:北大青鸟学校开发小组成员 暮雪乘风

你可能感兴趣的:(Python)