Python3爬虫小程序——爬取各类天气信息
经过前面静态页面的爬取已经收集到很多信息了。最近在看怎么从动态页面上爬取信息,主要用到的还是selenium+phantomJS工具(如何安装?点击这里查看),虽然存在一些缺点(效率不是很高),但是还算不错。
于是乎,前面从天气网(http://www.tianqi.com/)上爬信息的我,转到了中国天气网(http://www.weather.com.cn/)。
但是目前爬取数据存在一定问题,这里我用的是使用xpath去定位(因为xpath定位会比较准确),打开页面,按F12找到对应的信息,就可以右击,然后选择Copy-Copy XPath。感觉很好找到,可是运行就出问题。。。
例如:北京的相对湿度对应的xpath是://*[@id="today"]/div[2]/div/div[2]。因为没有尾号限行这一块,所以石家庄的是://*[@id="today"]/div[2]/div/div[1]。
北京的页面
石家庄的页面
可以明显看出,最后两个div是不同的。。。=.=|||然后用classname吧还找不到。。。现在还在看看看。。。
可以加入一定的if判断来区分这两个不一样的地方,继续试试。。
代码:
- #coding=utf-8
- from selenium import webdriver
- import time
- #构造数据,城市分别是北京、天津、石家庄、太原、济南、沈阳、呼和浩特、郑州
- city_id=['101010100','101030100','101090101','101100101','101120101','101070101','101080101','101180101']
- def getcityid(city):
- if city=='beijing':
- return city_id[0]
- elif city=='tianjin':
- return city_id[1]
- elif city=='shijiazhuang':
- return city_id[2]
- elif city=='taiyuan':
- return city_id[3]
- elif city=='jinan':
- return city_id[4]
- elif city=='shenyang':
- return city_id[5]
- elif city=='huhehaote':
- return city_id[6]
- else:
- return city_id[7]
- #获取天气情况数据
- def getweather(city):
- try:
- browser=webdriver.PhantomJS()
- print("城市:"+city)
- #构造url
- url="http://www.weather.com.cn/weather1d/"+getcityid(city)+".shtml"
- browser.get(url)
- browser.implicitly_wait(10)
- #构造列表
- weatherlist=[]
- #获取当前系统时间
- datetime = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
- weatherlist.append(str(datetime))
- #获取天气情况
- weaElement=browser.find_element_by_xpath('//*[@id="today"]/div[2]/ul/li[1]/p[1]')
- weatherlist.append(str(weaElement.text))
- #获取温度情况
- tempElement=browser.find_element_by_xpath('//*[@id="today"]/div[2]/div/div[4]/span')
- weatherlist.append(str(tempElement.text))
- #获取风向
- windElement=browser.find_element_by_xpath('//*[@id="today"]/div[2]/div/div[3]/span')
- weatherlist.append(str(windElement.text))
- # 获取风速
- windspeedElement = browser.find_element_by_xpath('//*[@id="today"]/div[2]/div/div[3]/em')
- weatherlist.append(str(windspeedElement.text))
- #获取湿度
- wetElement = browser.find_element_by_xpath('//*[@id="today"]/div[2]/div/div[2]/em')
- weatherlist.append(str(wetElement.text))
- print("系统时间、天气情况、温度、风向、风速、湿度")
- print(weatherlist)
- except Exception as e:
- print("获取天气数据出现异常!将在一分钟之后重试……")
- print("Exception:"+str(e))
- time.sleep(60)
- getweather(city)
- #主函数
- while(True):
- getweather("beijing")
- getweather("tianjin")
- getweather("shijiazhuang")
- getweather("taiyuan")
- getweather("jinan")
- getweather("shenyang")
- getweather("huhehaote")
- getweather("zhengzhou")
- #休息一小时
- time.sleep(3600)
相关推荐
- 通俗易懂的分析如何用Python实现一只小爬虫,爬取拉勾网的职位信息
- Python3爬虫小程序——爬取各类天气信息
- Python爬虫小实践:寻找失踪人口,爬取失踪儿童信息并写成csv文件,方便存入数据库
- Python爬虫小实践:寻找失踪人口,爬取失踪儿童信息并写成csv文件,方便存入数据库
- 以下用于数据存储领域的python第三方库是-Python3爬虫学习之MySQL数据库存储爬取的信息详解...
- python爬虫小例子:爬取猫眼电影Top10电影相关信息(代码超详细解读)
- Python程序员自制爬虫小程序, 瞬间爬取十几万美女图片
- python小爬虫(爬取职位信息)
- (六)Python爬虫------使用Scrapy库简单爬取天气网城市天气预报信息,并使用MySQL数据库保存数据
- Python 爬虫篇-简单获取页面信息,BeautifulSoup的使用,爬取墨迹天气天气信息演示,调用墨迹天气接口api。
- iCaRL:Incremental Classifier and Representation Learning论文阅读
- windows下使用的小工具汇总