• 在线客服

  • 扫描二维码
    下载博学谷APP

  • 扫描二维码
    关注博学谷微信公众号

  • 意见反馈

原创 用Python爬取天气数据并解析温度值

发布时间:2020-06-02 16:48:13 浏览 6095 来源:博学谷 作者:照照

    随着人工智能和大数据的发展,本来就风头强劲的Python在近几年更是发展得如日中天。众所周知,Python的应用场景十分广泛,像是在科学计算、游戏开发、web开发框架等方面都发挥了极大的作用,因此夸张一点说,掌握了Python你就无所不能了!下面我们就来看看如何用Python爬取天气数据并解析温度值~

     

    用Python爬取天气数据

     

    爬取的html 结构

     

    用Python爬取天气数据

     

    import requests

    from lxml import etree

    import pandas as pd

    import re

    url = 'http://www.weather.com.cn/weather1d/101010100.shtml#input'

    with requests.get(url) as res:

    content = res.content

    html = etree.HTML(content)

     

    通过lxml模块提取值

    lxmlbeautifulsoup解析在某些场合更高效

     

    location = html.xpath('//*[@id="around"]//a[@target="_blank"]/span/text()')

    temperature = html.xpath('//*[@id="around"]/div/ul/li/a/i/text()')

     

    结果:

     

    ['香河', '涿州', '唐山', '沧州', '天津', '廊坊', '太原', '石家庄', '涿鹿', '张家口', '

    ', '三河', '北京孔庙', '北京国子监', '中国地质博物馆', '月坛公

    ', '明城墙遗址公园', '北京市规划展览馆', '什刹海', '南锣鼓巷', '天坛公园', '北海公园',

    '景山公园', '北京海洋馆']

    ['11/-5°C', '14/-5°C', '12/-6°C', '12/-5°C', '11/-1°C', '11/-5°C', '8/-7°C',

    '13/-2°C', '8/-6°C', '5/-9°C', '14/-6°C', '11/-4°C', '13/-3°C'

    , '13/-3°C', '12/-3°C', '12/-3°C', '13/-3°C' ]

     

    构造DataFrame对象

     

    df = pd.DataFrame({'location':location, 'temperature':temperature})

    print('温度列')

    print(df['temperature'])

     

    正则解析温度值

     

    df['high'] = df['temperature'].apply(lambda x: int(re.match('(-?[0-9]*?)/-?[0-

    9]*?°C', x).group(1) ) )

    df['low'] = df['temperature'].apply(lambda x: int(re.match('-?[0-9]*?/(-?[0-

    9]*?)°C', x).group(1) ) )

    print(df)

     

    详细说明子字符创捕获

    除了简单地判断是否匹配之外,正则表达式还有提取子串的强大功能。用() 表示的就是要提取的分组(group)。比如: ^(\d{3})-(\d{3,8})$ 分别定义了两个组,可以直接从匹配的字符串中提取出区号和本地号码。

     

    m = re.match(r'^(\d{3})-(\d{3,8})$', '010-12345')

    print(m.group(0))

    print(m.group(1))

    print(m.group(2))

    # 010-12345

    # 010

    # 12345

     

    如果正则表达式中定义了组,就可以在Match 对象上用group() 方法提取出子串来。

    注意到group(0) 永远是原始字符串, group(1) group(2) ……表示第12、……个子串。

    最终结果:

     

    Name: temperature, dtype: object

    location temperature high low

    0 香河 11/-5°C 11 -5

    1 涿州 14/-5°C 14 -5

    2 唐山 12/-6°C 12 -6

    3 沧州 12/-5°C 12 -5

    4 天津 11/-1°C 11 -1

    5 廊坊 11/-5°C 11 -5

    6 太原 8/-7°C 8 -7

    7 石家庄 13/-2°C 13 -2

    8 涿鹿 8/-6°C 8 -6

    9 张家口 5/-9°C 5 -9

    10 保定 14/-6°C 14 -6

    11 三河 11/-4°C 11 -4

    12 北京孔庙 13/-3°C 13 -3

    13 北京国子监 13/-3°C 13 -3

    14 中国地质博物馆 12/-3°C 12 -3

    15 月坛公园 12/-3°C 12 -3

    16 明城墙遗址公园 13/-3°C 13 -3

    17 北京市规划展览馆 12/-2°C 12 -2

    18 什刹海 12/-3°C 12 -3

    19 南锣鼓巷 13/-3°C 13 -3

    20 天坛公园 12/-2°C 12 -2

    21 北海公园 12/-2°C 12 -2

    22 景山公园 12/-2°C 12 -2

    23 北京海洋馆 12/-3°C 12 -3

     

    以上就是用Python爬取天气数据并解析温度值的解析,大家都学会了吗?学习Python还能通过爬虫技术去获取各种页面数据,因此掌握Python不仅仅是编程技术工作岗位的要求,还是提高非编程职业竞争力的需要,大家还不快快学起来~

    申请免费试学名额    

在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!

上一篇: Python基础学习之环境搭建 下一篇: Python培训有必要参加吗?就业有优势吗?

相关推荐 更多

热门文章

  • 前端是什么
  • 前端开发的工作职责
  • 前端开发需要会什么?先掌握这三大核心关键技术
  • 前端开发的工作方向有哪些?
  • 简历加分-4步写出HR想要的简历
  • 程序员如何突击面试?两大招带你拿下面试官
  • 程序员面试技巧
  • 架构师的厉害之处竟然是这……
  • 架构师书籍推荐
  • 懂了这些,才能成为架构师
  • 查看更多

扫描二维码,了解更多信息

博学谷二维码