示例:抓取和风天气图标
主要代码
#!/usr/bin/env python
import re
import requests
def SaveImage(name, data):
base = '/tmp/%s.png' % name
f = open(base, 'wb')
f.write(data)
f.close()
def GetUrlResponse(url):
resp = requests.get(url)
return resp
def DowloadImage(name, url):
if url and url.find('.png') > 0:
data = GetUrlResponse(url).content
SaveImage(name, data)
print "-- image %s saved" % (name)
else:
print "** invalid image %s [%s]" % (name, url)
url = 'https://cdn.heweather.com/condition-code.txt'
content = GetUrlResponse(url).text
lines = content.split('\n')
for line in lines:
cols = line.split('\t')
if len(cols) >= 4:
name = cols[2].replace('/','_').replace(' ','_')
url = cols[3]
print "- trying %s [%s]" % (name, url)
DowloadImage(name, url)
抓取执行过程记录
$ python FetchWeatherIcons.py
- trying 英文 [ICON]
** invalid image 英文 [ICON]
- trying Sunny_Clear [https://cdn.heweather.com/cond_icon/100.png]
-- image Sunny_Clear saved
- trying Cloudy [https://cdn.heweather.com/cond_icon/101.png]
-- image Cloudy saved
- trying Few_Clouds [https://cdn.heweather.com/cond_icon/102.png]
-- image Few_Clouds saved
- trying Partly_Cloudy [https://cdn.heweather.com/cond_icon/103.png]
-- image Partly_Cloudy saved
- trying Overcast [https://cdn.heweather.com/cond_icon/104.png]
-- image Overcast saved
- trying Windy [https://cdn.heweather.com/cond_icon/200.png]
-- image Windy saved
- trying Calm [https://cdn.heweather.com/cond_icon/201.png]
-- image Calm saved
- trying Light_Breeze [https://cdn.heweather.com/cond_icon/202.png]
-- image Light_Breeze saved
- trying Moderate_Gentle_Breeze [https://cdn.heweather.com/cond_icon/203.png]
-- image Moderate_Gentle_Breeze saved
- trying Fresh_Breeze [https://cdn.heweather.com/cond_icon/204.png]
-- image Fresh_Breeze saved
- trying Strong_Breeze [https://cdn.heweather.com/cond_icon/205.png]
-- image Strong_Breeze saved
- trying High_Wind,_Near_Gale [https://cdn.heweather.com/cond_icon/206.png]
-- image High_Wind,_Near_Gale saved
- trying Gale [https://cdn.heweather.com/cond_icon/207.png]
-- image Gale saved
- trying Strong_Gale [https://cdn.heweather.com/cond_icon/208.png]
-- image Strong_Gale saved
- trying Storm [https://cdn.heweather.com/cond_icon/209.png]
-- image Storm saved
- trying Violent_Storm [https://cdn.heweather.com/cond_icon/210.png]
-- image Violent_Storm saved
- trying Hurricane [https://cdn.heweather.com/cond_icon/211.png]
-- image Hurricane saved
- trying Tornado [https://cdn.heweather.com/cond_icon/212.png]
-- image Tornado saved
- trying Tropical_Storm [https://cdn.heweather.com/cond_icon/213.png]
-- image Tropical_Storm saved
- trying Shower_Rain [https://cdn.heweather.com/cond_icon/300.png]
-- image Shower_Rain saved
- trying Heavy_Shower_Rain [https://cdn.heweather.com/cond_icon/301.png]
-- image Heavy_Shower_Rain saved
- trying Thundershower [https://cdn.heweather.com/cond_icon/302.png]
-- image Thundershower saved
- trying Heavy_Thunderstorm [https://cdn.heweather.com/cond_icon/303.png]
-- image Heavy_Thunderstorm saved
- trying Hail [https://cdn.heweather.com/cond_icon/304.png]
-- image Hail saved
- trying Light_Rain [https://cdn.heweather.com/cond_icon/305.png]
-- image Light_Rain saved
- trying Moderate_Rain [https://cdn.heweather.com/cond_icon/306.png]
-- image Moderate_Rain saved
- trying Heavy_Rain [https://cdn.heweather.com/cond_icon/307.png]
-- image Heavy_Rain saved
- trying Extreme_Rain [https://cdn.heweather.com/cond_icon/308.png]
-- image Extreme_Rain saved
- trying Drizzle_Rain [https://cdn.heweather.com/cond_icon/309.png]
-- image Drizzle_Rain saved
- trying Storm [https://cdn.heweather.com/cond_icon/310.png]
-- image Storm saved
- trying Heavy_Storm [https://cdn.heweather.com/cond_icon/311.png]
-- image Heavy_Storm saved
- trying Severe_Storm [https://cdn.heweather.com/cond_icon/312.png]
-- image Severe_Storm saved
- trying Freezing_Rain [https://cdn.heweather.com/cond_icon/313.png]
-- image Freezing_Rain saved
- trying Light_Snow [https://cdn.heweather.com/cond_icon/400.png]
-- image Light_Snow saved
- trying Moderate_Snow [https://cdn.heweather.com/cond_icon/401.png]
-- image Moderate_Snow saved
- trying Heavy_Snow [https://cdn.heweather.com/cond_icon/402.png]
-- image Heavy_Snow saved
- trying Snowstorm [https://cdn.heweather.com/cond_icon/403.png]
-- image Snowstorm saved
- trying Sleet [https://cdn.heweather.com/cond_icon/404.png]
-- image Sleet saved
- trying Rain_And_Snow [https://cdn.heweather.com/cond_icon/405.png]
-- image Rain_And_Snow saved
- trying Shower_Snow [https://cdn.heweather.com/cond_icon/406.png]
-- image Shower_Snow saved
- trying Snow_Flurry [https://cdn.heweather.com/cond_icon/407.png]
-- image Snow_Flurry saved
- trying Mist [https://cdn.heweather.com/cond_icon/500.png]
-- image Mist saved
- trying Foggy [https://cdn.heweather.com/cond_icon/501.png]
-- image Foggy saved
- trying Haze [https://cdn.heweather.com/cond_icon/502.png]
-- image Haze saved
- trying Sand [https://cdn.heweather.com/cond_icon/503.png]
-- image Sand saved
- trying Dust [https://cdn.heweather.com/cond_icon/504.png]
-- image Dust saved
- trying Duststorm [https://cdn.heweather.com/cond_icon/507.png]
-- image Duststorm saved
- trying Sandstorm [https://cdn.heweather.com/cond_icon/508.png]
-- image Sandstorm saved
- trying Hot [https://cdn.heweather.com/cond_icon/900.png]
-- image Hot saved
- trying Cold [https://cdn.heweather.com/cond_icon/901.png]
-- image Cold saved
- trying Unknown [https://cdn.heweather.com/cond_icon/999.png]
-- image Unknown saved
$