Python3网络爬虫教程12——页面解析及正则表达式的使用

版权声明:本文章为沐言-BigTree原创,转载复制请标明出处 https://blog.csdn.net/u011318077/article/details/86633330

上接:
Python3网络爬虫教程11——Requests包(HTTP for Humans)
https://blog.csdn.net/u011318077/article/details/86633261

1. 页面解析和数据提取简介

  • 结构数据:先有的结构,再谈数据

    • JSON文件
      • JSON Path
      • 转换成Python类型进行操作(json类)
    • XML文件
      • 转化为Python类型进行操作(xml to dict)
      • XPath
      • CSS选择器
      • 正则表达式
  • 非结构化数据:现有数据,再谈结构

    • 文本
    • 电话号码
    • 邮箱地址
    • 通常处理上述数据,都有一定的规律,使用正则表达式
    • HTML文件
      • 正则
      • XPath
      • CSS选择器

2. 正则表达式

  • 一套规则,可以字符串文本中进行搜索替换等

  • 案例67_1,re的基本使用流程

  • 正则常用方法函数:

    • compile 函数用于编译正则表达式
    • 生成一个正则表达式( Pattern )对象
    • 供 match() 和 search() 这两个函数使用
    • re.match函数
      尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。
      re.match(pattern, string, flags=0)
    • re.search 扫描整个字符串并返回第一个成功的匹配
      re.search(pattern, string, flags=0)
    • group() 或 groups() 匹配对象函数来获取匹配表达式
    • re.sub用于替换字符串中的匹配项
      re.sub(pattern, repl, string, count=0)
    • start() 返回匹配开始的位置
    • end() 返回匹配结束的位置
    • span() 返回一个元组包含匹配 (开始,结束) 的位置
    • 参考案例36_1/2/3.py
  • re.match和re.search的区别

    • re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;
    • 而re.search匹配整个字符串,直到找到一个匹配。
  • 匹配中文

    • 大部分中文内容表示范围是[u4e00-u9fa5]
    • findall找出所有的匹配
    • 看案例36_4
  • 贪婪和非贪婪

    • 贪婪:尽可能多的匹配(*)表示
    • 非贪婪:找到符合条件的最小内容即可,(?)表示
    • 正则默认使用贪婪匹配
    • 看案例36_5

3. XML XPath 请参考高级语言中的内容

https://blog.csdn.net/u011318077/article/details/86500576

本章案例较多:
源代码请到GITHUB下载:
https://github.com/FangbaiZhang/TLXY_study_note/tree/master/Spider

下接:
Python3网络爬虫教程13——BeautifulSoup4基本使用及遍历文档树
https://blog.csdn.net/u011318077/article/details/86633392

猜你喜欢

转载自blog.csdn.net/u011318077/article/details/86633330