python爬天气网历史数据
来源:互联网 发布:嵌入式就业前景 知乎 编辑:程序博客网 时间:2024/06/12 08:11
#爬取天气网气象数据____聂拉木 日期 最高气温 最低气温 天气 风向 风力 0 2011-01-01 3 -7 晴 无持续风向~西风 微风~7-8级 1 2011-01-02 5 -6 晴 西风 7-8级 2 2011-01-03 6 -5 晴 西风~无持续风向 7-8级~微风 3 2011-01-04 4 -6 晴 无持续风向 微风 4 2011-01-05 3 -7 晴~多云 无持续风向 微风 5 2011-01-06 2 -8 晴~多云 无持续风向 微风 6 2011-01-07 0 -8 晴 无持续风向 微风 7 2011-01-08 0 -13 晴 无持续风向 微风
from urllib.request import urlopenfrom bs4 import BeautifulSoupimport reimport pandas as pd
## 生成爬取网址由于气象网数据的网站链接地址比较特殊,采用如http://lishi.tianqi.com/nielamu/201102.html 即 http://lishi.tianqi.com/ + 城市 + 时间的形式所以首先生成爬取的网页的地址#生成url链接def year_month(): urllist = [] for i in range(2011,2018): for j in range(1,13): if j <10: url_text = 'http://lishi.tianqi.com/nielamu/'+str(i)+'0'+str(j)+'.html' else: url_text = 'http://lishi.tianqi.com/nielamu/'+str(i)+str(j)+'.html' urllist.append(url_text) return urllisturl_list = year_month()#到现今共可取url_list[0:79]url_list[1:5]
[‘http://lishi.tianqi.com/nielamu/201102.html’, ‘http://lishi.tianqi.com/nielamu/201103.html’, ‘http://lishi.tianqi.com/nielamu/201104.html’, ‘http://lishi.tianqi.com/nielamu/201105.html’]如下图网站中的数据保存在如下表格中
查看源代码发现 所需的数据在 div的tqtongji2 下
因此使用BeautifulSoup解析网页源代码,并且使用find函数寻找 div class=”tqtongji2” 标签
然后继续使用find_all函数解析ul 标签, ul标签内包含了所需数据
#获取天气网下天气情况部分的数据def weather_scraping(url): html = urlopen(url) bsObj = BeautifulSoup(html.read()) div = bsObj.find("div",'tqtongji2') ul = div.find_all('ul') return ul
可以看出weath_scraping函数 返回的是一个list 包含了div 下的每个 ul标签weul = weather_scraping(url_list[0])isinstance(weul , list)
True解析每一个ul标签,用get_text函数取出li标签下的数据,然后保存为datafram 格式#解析获取的ul标签内数据 , 返回datafram 格式数据def analysis_ul(url): ul = weather_scraping(url) weather_list = [] for ul_text in ul[1:]: li_text = ul_text.find_all('li') day_data = [] for text in li_text: data= text.get_text() day_data.append(data) weather_list.append(day_data) columns = [ i.get_text() for i in ul[0].find_all('li')] weather_pd = pd.DataFrame(weather_list , columns=columns ) return weather_pd
## 遍历所有的网址 生成一个总的datafram 并保存#爬取数据weather_data = analysis_ul(url_list[0])for i in url_list[1:79]: data_month = analysis_ul(i) weather_data = weather_data.append(data_month,ignore_index=1)
#保存数据weather_data.to_csv('weather_201101_201707.txt' , index = False , sep = ',')
weather_data.head(7)
7 rows × 6 columns
阅读全文
0 0
- python爬天气网历史数据
- python爬取天气网历史数据
- python3爬天气后报历史数据
- Python爬取天气网历史天气数据
- Python爬取中国天气网天气数据
- Python 抓取中国天气网天气数据
- python获取股票历史数据
- Python股票历史数据下载
- Python-爬取中国天气网天气并通过邮箱定时发送
- python爬取天气数据
- Python爬取天气信息
- Python 股票历史数据的获取
- python爬取历史天气数据
- python多进程爬取天气信息
- 【详解】Python带历史数据写Excel表
- python学习3:获取股票历史数据
- Python爬虫实践:获取空气质量历史数据
- Python股票历史数据预处理(一)
- POJ 1611 The Suspects(并查集模板)
- Logistic Regression Formula deduction
- DAY56 JavaScript基础1
- 解决Wine安装时提示You could try running: rpm -Va –nofiles –nodigest问题
- LightOJ
- python爬天气网历史数据
- 排序算法之选择排序
- 2010年计算机联考真题——一维数组循环左移
- PHP时间戳和日期的相互转换
- Qt学习笔记之QPushButton 按钮类
- 贴之道-别生气了,会伤害乳房
- POJ3318:Matrix Multiplication(矩阵相乘)
- Splay基本操作和线段树(指针版)
- go在windows上环境搭建