• 爬虫 — 正则案例


    一、需求

    目标网站:http://www.weather.com.cn/weather/101010700.shtml

    需求:获取日期,天气,温度,风力数据

    二、页面分析

    1、确定 url,静态加载

    url:http://www.weather.com.cn/weather/101010700.shtml

    2、解析数据

    先获取 ul 标签的内容 .*(.*?).* 相当于是想要的内容
    .* :表示尽可能匹配多的字符
    .*? :表示尽可能匹配少的字符

    获取每一组 li 标签,findall查找所有,返回的数据类型是 list

    3、匹配详情数据

    <li.*?
    <h1>(.*?)</h1>
    .*?
    <p.*?>(.*?)</p>
    .*?
    <i>(.*?)</i>
    .*?
    <i>(.*?)</i>
    .*
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    三、代码实现

    # 导入模块
    import requests
    import re # 内置库
    
    # 确定 url
    url = 'http://www.weather.com.cn/weather/101010700.shtml'
    
    # 发请求,获取响应
    res = requests.get(url)
    
    # 出现乱码,进行编码
    res.encoding = 'utf-8'
    
    # 打印响应内容
    # print(res.text)
    
    # 做数据解析
    # re.match 从头开始找,最开始就没有匹配返回 None
    # .匹配任意一个字符,但是 \n 符号不匹配
    # re.S 帮助.匹配到换行符
    result = re.match('.*(
      .*?
    ).*'
    , res.text, re.S) # 获取 ul 标签里面的内容,一个括号分一个组,如果取第一个括号里面的内容,1 ul = result.group(1) # 贪婪模式与非贪婪模式 # .* 尽可能匹配多的字符 # .*? 尽可能匹配少的字符 lis = re.findall('.*?
  • ', ul, re.S) # 遍历每一个 li 标签,拿到每一组数据 compile() 模板 pattern = re.compile('(.*?).*?(.*?)

    .*?(.*?).*?(.*?).*'
    , re.S) for li in lis: # print(li) r = pattern.match(li) print(r.group(1), r.group(2), r.group(3), r.group(4)) # break
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37

    记录学习过程,欢迎讨论交流,尊重原创,转载请注明出处~

  • 相关阅读:
    Git --- 基础介绍
    <html dir=ltr>是什么意思?
    淘宝开放平台官方API接口获取淘宝app商品详情原数据,产品优惠券信息, 产品详情信息示例
    考研总计划(基础篇)
    进程终止(你真的学会递归了吗?考验你的递归基础)
    四种类型自编码器AutoEncoder理解及代码实现
    Monaco Editor教程(八): 实现添加自定义命令,添加自定义菜单action功能
    k8s--基础--10.1--命令--kubectl--介绍.md
    【斗罗2】霍雨浩实力被否定,超级斗罗眼光被嘲,魂导院成功捡漏
    【面试必备】我跟面试官聊了一个小时线程池!
  • 原文地址:https://blog.csdn.net/muyuhen/article/details/132827569