ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 4401|回复: 3

[分享] 获取天气预报

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-2-5 16:42 | 显示全部楼层 |阅读模式
  1. # -*- coding: UTF-8 -*-
  2. #=================================================
  3. #      language       : Python3.4
  4. #      IDLE           :  pycharm
  5. #      Library needed : re,requests.urlib
  6. #      Date           :  05/02/2019
  7. #=================================================
  8. import re
  9. import requests
  10. from urllib.parse import quote
  11. class Tianqi2345():
  12.     def __init__(self, city):
  13.         self.city = city
  14.         self.bm_url = 'https://tianqi.2345.com/t/searchCity.php?pType=local&q='
  15.         self.ua = 'Mozilla/5.0 '
  16.         self.ref = 'https://tianqi.2345.com/'
  17.         self.headers = {'User-Agent': self.ua,'Accept': 'application/json, text/javascript, */*; q=0.01', 'Referer': self.ref }
  18.         self.query_headers = {'User-Agent': self.ua,'Referer': self.ref,
  19.                               'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8' }

  20.     def get_city_code(self):
  21.         try:
  22.             r = requests.get(url=self.bm_url + quote(self.city), headers= self.headers)
  23.             r.raise_for_status()
  24.             r.encoding = r.apparent_encoding
  25.             data = r.json()
  26.             if data['res'][0]['href']:
  27.                 return data['res'][0]['href']
  28.             else:
  29.                 print('没有'+  self.city + '的天气信息')
  30.         except requests.ConnectionError as e:
  31.             print('Erro')

  32.     def get_html(self):
  33.         url = 'https://tianqi.2345.com' + self.get_city_code()
  34.         try:
  35.             r = requests.get(url=url, headers= self.query_headers)
  36.             r.raise_for_status()
  37.             r.encoding = 'GBK'
  38.             return r.text
  39.         except requests.ConnectionError as e:
  40.             print('Error')

  41.     def parsed_data(self):
  42.         text = self.get_html()
  43.         r = re.compile(r'<p><strong>([^<]+)\(<font.*?>([^<]+)</font>\).*?<b>([^<]+)</b><i><font class="blue">'\
  44.                        '([^<]+)</font>~<font class="red">([^<]+)</font><br.*?((?<=>)[^<]+)</i>', re.M | re.S)
  45.         result = re.findall(r, text)
  46.         fbsj= 'From:2345天气预报'
  47.         print('  -----' + self.city+ '天气预报' + '(未来'+ str(len(result))+'天)' + fbsj + '-----')
  48.         print('-'*60)
  49.         for p in result:
  50.             p0, p1, p2, p3, p4, p5 = p
  51.             print("  {0:^6}\t {1:^2}\t{2:{6}<6}\t{3:{6}<4}\t{4:{6}^3}\t{5:{6}<6}".format(p0, p1, p2, p3, p4, p5.replace(' ' , ''), chr(12288)))
  52.         print('-'*60)


  53. if __name__ == '__main__':
  54.     city= input("输入要查询的城市:")
  55.     Tianqi2345(city).parsed_data()
复制代码


TA的精华主题

TA的得分主题

发表于 2019-2-5 18:49 | 显示全部楼层
楼主这是什么代码啊?

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-2-5 18:51 来自手机 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2019-2-5 22:07 | 显示全部楼层
本帖最后由 ftgli 于 2019-2-5 22:09 编辑

这里是vba论坛。。。。。,不过兄弟python水平很好啊
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-27 13:14 , Processed in 0.037212 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表