项目代码展示

re正则爬取 - 图1

使用技术

  • python正则匹配
  • Beautifulsoup4库
  • xpath解析

正则匹配

  • 和JavaScript语言匹配方式类似
  • 使用前需导入re
  • 有几种正则匹配的方法:match, search, compile, findall, finditer

re.match(a, b, c)

  • 三个参数: 匹配的规则, 要匹配的字符串, 匹配方式
  • 它是从字符串的第一个位置进行匹配如果满足使用.span()方法可以返回它所在的索引位置, 如果不满足则返回None
  • 返回结果.groups()返回一个包含所有小组的字符串的元组, 使用group(num)方法可以返回一个包含对应值的元组(从1开始)

re.search(a, b, c)

  • 也是三个参数, 与上面相同
  • 获取元组方法也相同, 唯一的不同点就是, search不是从一开始进行匹配, 而是如果字符串中包含所要匹配的内容, 则返回第一个匹配成功的
  • 注意只返回一个不是多个

re.sub(a, b, c, d, e)

  • 执行替换操作
  • a正则中的模式字符串
  • b要替换的字符串, 也可以是一个函数
  • c原始字符串
  • d匹配后替换的最大次数, 默认是0表示全部匹配替换
  • e匹配模式, 数字形式

re.compile(a, b)

  • 用来编译正则表达式, 供match和search这两个函数使用
  • 如果使用的是match方法 在获取匹配的字符时使用group方法获取参数可以省略不写也可以写0
  • group方法参数的数值与你所写的正则表达式元组数有关
  • start, end, span方法都是返回匹配字符在原字符串中所在的索引位置

findall(a, b, c, d)

  • 参数分别表示: 正则表达式, 匹配的字符串, 指定匹配的起始位置, 结束位置
  • 返回满足条件的所有子串, 列表的形式, 如不则返回空列表
  • 如果由有元组则返回满足元组规则的字符 可进行遍历

finditer(a, b, c)

  • 参数分别为: 匹配规则, 匹配的字符串, 匹配模式
  • 和findall方法类似, 返回值使用迭代器方式返回使用for in方法

re.split(a, b, c, d)

  • 按照匹配规则将匹配的字符串进行分隔以列表的形式返回
  • 参数分别为: 匹配规则, 匹配字符, 切割次数默认为0, 不限制次数, 匹配模式

正则表达式修饰符

  • re.I 是匹配时大小写不敏感
  • re.L 做本地化识别
  • re.S 使. 匹配包括换行在内的所有字符
  • re.M 多行匹配影响^$
  • re.U 根据Unicode字符集解析字符. 这个标志影响 \w, \W, \b, \B.
  • re.X 该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解.

Python正则表达式详解 (超详细, 看完必会!)