1 #!/user/bin env python

2 #author:Simple-Sir

3 #time:2019/7/25 21:16

4 #爬取中国天气网数据

5

6 importrequests,html5lib7 from bs4 importBeautifulSoup8 from pyecharts.charts import Bar #官方已取消 pyecharts.Bar 方式导入

9 from pyecharts importoptions10 from pyecharts.globals importThemeType11 from datetime importdatetime12

13 WEARTHER_DATE =[] #城市天气数据列表

14

15 defurlText(url):16 '''

17 获取网页HTML代码,并解析成文本格式18 :param url: 网页url地址19 :return: 解析之后的html文本20 '''

21 headers ={22 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'

23 }24 respons = requests.get(url, headers=headers) #获取网页信息

25 text = respons.content.decode('utf-8') #解析网页

26 returntext27

28 defgetDiv(url,area):29 '''

30 获取需要的html标签:城市、最高温度31 :param url:32 :param area: 区域:全国、全省(四川) 0:全国、其他任意值:全市33 :return:34 '''

35 text =urlText(url)36 #soup = BeautifulSoup(text,'lxml') # 港澳台html中table标签解析错误

37 soup = BeautifulSoup(text, 'html5lib') #html5lib 容错性比lxml高

38 conMidtab = soup.find_all('div',class_="conMidtab")[1] #获取“明天”的天气

39 if area == '四川':40 #获取四川所有城市天气

41 trs = conMidtab.find_all('tr')[2:]42 for tr intrs:43 tds = tr.find_all('td')44 city_td =tds[0]45 city = list(city_td.stripped_strings)[0] #区县

46 temp_td = tds[-5] #倒数第5个td标签

47 temp = list(temp_td.stripped_strings)[0] #最高温度

48 print('正在获取 {} 的最高气温:{}'.format(city, temp))49 WEARTHER_DATE.append({'城市': city, '最高温度': int(temp)})50 else:51 #获取全国城市天气

52 tables = conMidtab.find_all('table')53 for t intables:54 trs = t.find_all('tr')[2:]55 for index, tr inenumerate(trs):56 tds = tr.find_all('td')57 if index ==0:58 city_td = tds[1] #city_td = tds[-8] # 港澳台格式错误

59 else:60 city_td =tds[0]61 city = list(city_td.stripped_strings)[0] #区县

62 temp_td = tds[-5] #倒数第5个td标签

63 temp = list(temp_td.stripped_strings)[0] #最高温度

64 print('正在获取 {} 的最高气温:{}'.format(city,temp))65 WEARTHER_DATE.append({'城市': city, '最高温度': int(temp)})66

67

68 #可视化数据,对城市温度排名

69 #def getRownum(data):

70 #max_temp = data['最高温度'] # 把列表里的每一项当作参数传进来,再获取“最高温度”这一项的值

71 #return max_temp

72 #WEARTHER_DATE.sort(key=getRownum) # 功能和它一样:WEARTHER_DATE.sort(key=lambda data:data['最高温度'])

73

74 defmain():75 city_list =['hb','db','hd','hz','hn','xb','xn','gat','sichuan']76 getcity = input('您要获取“全国”还是“四川”的最高温度排名?\n')77 if getcity=='四川':78 url = 'http://www.weather.com.cn/textFC/{}.shtml'.format(city_list[-1])79 getDiv(url,getcity)80 else:81 for cl in city_list[:-1]:82 url = 'http://www.weather.com.cn/textFC/{}.shtml'.format(cl)83 getDiv(url,getcity)84 print('正在对天气温度进行排序处理...')85 WEARTHER_DATE.sort(key=lambda data: int(data['最高温度'])) #对列表中的字典数据排序,温度从低到高

86 WEARTHER_DATE.reverse() #把对列表反转,温度从高到低

87 rownum = WEARTHER_DATE[:10] #获取最高温度排名前十的城市

88 print('正在绘制图表...')89 #分别获取城市、温度列表

90 #原始方法:

91 #citys=[]

92 #temps=[]

93 #for i in rownum:

94 #citys.append(i['城市'])

95 #temps.append(i['最高温度'])

96

97 #高端方法:

98 citys = list(map(lambda x: x['城市'], rownum)) #使用map分离出城市

99 temps = list(map(lambda x: x['最高温度'], rownum)) #使用map分离出最高温度

100 #通过使用pyecharts的Bar可视化数据,附官方中文API地址:https://pyecharts.org/#/

101 bar = Bar(init_opts = options.InitOpts(theme=ThemeType.DARK)) #对表格添加主题

102 bar.add_xaxis(citys)103 bar.add_yaxis('',temps)104 tim = datetime.now().strftime('%Y-%m-%d')105 bar.set_global_opts(title_opts={'text':'中国天气网 {} 城市明日最高温度排名前十({})'.format(getcity,tim)})106 bar.render('中国天气网城市最高温度排名.html')107 print('图表绘制已完成,结果已写入文件,请查看。')108 if __name__ == '__main__':109 main()

python爬虫爬取中国天气网_初识python 之 爬虫:爬取中国天气网数据相关推荐

  1. python爬取本地天气信息_用Python写一个爬取中国天气网的终端版天气预报爬虫

    导语 前几篇文章介绍了爬取静态网站的主要方法.今天写一个小项目实践一下.本项目可以在终端窗口查询全国3400多个区县的当日天气信息和近七天天气信息. 实现效果 [Python爬虫]写一个爬取中国天气网 ...

  2. python爬虫去哪儿网_用python爬虫爬取去哪儿4500个热门景点,看看国庆不能去哪儿...

    引用 那么问题来了,去哪儿玩呢?百度输了个"国庆",出来的第一条居然是"去哪里旅游人少"--emmmmmmm,因缺思厅. 于是我萌生了通过旅游网站的景点销量来判 ...

  3. python爬虫beautifulsoup爬当当网_利用python爬虫可视化分析当当网的图书数据!

    导语 这周末就分享个小爬虫吧.利用Python爬取并简单地可视化分析当当网的图书数据. 开发工具 Python版本:3.6.4 相关模块: requests模块: bs4模块: wordcloud模块 ...

  4. python爬虫网页图片显示不出来_用Python爬取20万条网页美女图片,两只眼睛 都看不过来了!...

    前言 最近几天,研究了一下一直很好奇的爬虫算法.这里写一下最近几天的点点心得.下面进入正文: 你可能需要的工作环境: Python 3.6官网下载 本地下载 我们这里以sogou作为爬取的对象. 首先 ...

  5. python 爬带端口的网站_程序员带你爬取爬虫最爱扒的网站数据。快来看!

    无私分享全套Python爬虫干货,如果你也想学习Python,@ 私信小编获取 先问三个问题: 1.你以为你在大众点评上找到的馆子,真的是几百个人给了好评,然后才出现在你的推荐里的吗? 2.你以为你在 ...

  6. python爬取股吧评论_神级的爬虫工程师用Python教你爬取全站股票评论!买哪只有底呢!...

    爬取思路是这样的,先挖取所有股票的代码,放进数据库,然后根据股票代码爬取每一只股票的评论,多了,一定要加入代理池,我这里用的上上一篇文章写的代理池,我们给每个股票代码赋予一个状态值,一开始是outst ...

  7. Python爬取网站用户手机号_利用python爬取慕课网站上面课程

    1.抓取网站情况介绍 抓取网站:http://www.imooc.com/course/list 抓取内容:要抓取的内容是全部的课程名称,课程简介,课程URL ,课程图片URL,课程人数(由于动态渲染 ...

  8. python3爬取微博评论教程_用python 爬取微博评论,怎么打开微博评论下的查看更多|...

    怎样用python爬新浪微博大V所有数据 先上结论,通过公开的api如爬到某大v的所有数据,需足以下两个条件: 1.在你的爬虫开始运行时,该大v的所有微博发布量没有超过回溯查询的上限,新浪是2000, ...

  9. 如何使用python编程抢京东优惠券 知乎_学好Python爬取京东知乎价值数据

    原标题:学好Python爬取京东知乎价值数据 Python爬虫为什么受欢迎 如果你仔细观察,就不难发现,懂爬虫.学习爬虫的人越来越多,一方面,互联网可以获取的数据越来越多,另一方面,像 Python这 ...

  10. python登录it桔子网_解决IT桔子爬虫的登录问题

    IT桔子是关注IT互联网行业的结构化的公司数据库和商业信息服务提供商,里面有很多有用的信息.于是,我又想爬IT桔子?来提升一下我的爬虫技术了.(注意:IT桔子有用户校验机制,没有购买VIP的用户很多信 ...

最新文章

  1. Windows Azure ISV博客系列:ReedRex 的sociobridge
  2. python索引 切片_python_索引_切片
  3. 我的C++学习历程(old)
  4. 谁在为网易云音乐2亿用户的即时通讯保驾护航?
  5. mysql 图形插件_对我来说数据库图形化管理工具用这个足够了
  6. 【C语言进阶深度学习记录】三十六 程序与进程的区别(程序的内存布局)
  7. 5步详解PHP文件上传功能的实现
  8. iview 下拉select样式_Ant Design 4.0 的一些杂事儿 - Select 篇
  9. halcon窗体的移动和缩放_Halcon hWindowControl 鼠标缩放平移区域模板匹配绘制
  10. [原创]HierarchyView的实现原理和Android设备无法使用HierarchyView的解决方法
  11. 独立游戏开发日志:2021年2月12日 改进版反弹跳
  12. DSP28335学习记录(三)——ePWM
  13. 逍遥安卓模拟器android,逍遥安卓模拟器
  14. OPNsense - 多功能高可靠易使用的防火墙(四)
  15. js解决m3u8视频无法播放问题
  16. 怎么为PE添加输入法
  17. P4643 [国家集训队]阿狸和桃子的游戏
  18. 元宵快乐!!!! 自己做的贺卡。。 :)
  19. 最小二乘法、加权最小二乘法——直线拟合
  20. 基于Python实现微信公众号爬虫进行数据分析

热门文章

  1. 欢迎大家访问吐槽人网 http://www.tucaoman.com/
  2. Oracle、plsql安装以及使用教程
  3. Spring Boot过滤器和拦截器详解
  4. 算法学习笔记(使用追赶法解三对角方程组)
  5. SAP 软件PS 模块系统操作之一工作分解结构(WBS)的创建
  6. Docker入门教程
  7. centerOS 安装redis
  8. java断点下载文件_java实现文件断点续传下载功能
  9. 开放有限元分析计算平台介绍
  10. xbox one 手柄按键测试软件,Xbox One手柄映射工具(ReWASD)