• 爬虫 — 正则案例


    一、需求

    目标网站: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

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

  • 相关阅读:
    【LeetCode热题100】--283.移动零
    C# ModBus协议(RTU )详细指南
    【LabVIEW FPGA入门】NI 环境安装教程
    重温C语言十三------动态内存分配
    TypeScript——接口(对象接口)、函数(定义类型,可选参数,默认参数,剩余参数,函数类型变量,函数接口)
    golang学习笔记——Map
    springBoot 源码五:springboot启动源码补充和配置优先级
    【怎么理解回流与重绘?以及触发场景】
    西安电子科技大学软件体系结构复习
    Apache Airflow (十一) :HiveOperator及调度HQL
  • 原文地址:https://blog.csdn.net/muyuhen/article/details/132827569