python爬虫 正则表达式 re.finditer 元字符 贪婪匹配 惰性匹配

Posted 皓月盈江

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python爬虫 正则表达式 re.finditer 元字符 贪婪匹配 惰性匹配相关的知识,希望对你有一定的参考价值。



测试代码1:
main5.py

# -*- coding: utf-8 -*-
import re

if __name__ == '__main__':
    # findall匹配字符串中所有的符合正则的内容
    lst = re.findall(r"\\d+", "濮阳电话区号:0393,郑州电话区号:0371")
    print(lst)

    # 【推荐】finditer匹配字符串中所有的内容[返回的是迭代器],从迭代器中拿到内容需要.group()
    it = re.finditer(r"\\d+", "濮阳电话区号:0393,郑州电话区号:0371")
    for i in it:
        print(i.group())

    # search,找到一个结果就返回,返回的结果是match对象,拿到数据需要.group()
    s = re.search(r"\\d+", "濮阳电话区号:0393,郑州电话区号:0371")
    print(s.group())

    # match,从头开始匹配
    s = re.match(r"\\d+", "0393,郑州电话区号:0371")
    print(s.group())

    # 【推荐】finditer匹配字符串中所有的内容[返回的是迭代器],从迭代器中拿到内容需要.group()
    # 预加载正则表达式
    obj = re.compile(r"\\d+")
    it = obj.finditer("濮阳电话区号:0393,郑州电话区号:0371")
    for i in it:
        print(i.group())

测试代码2:python爬虫很常用的从网页提取数据例子
main6.py

# -*- coding: utf-8 -*-
import re

if __name__ == '__main__':
    s = """
        <div class= 'tom'><span id= '1'>汤姆</span></div>
        <div class= 'kali'><span id= '2'>凯丽</span></div>
        <div class= 'lnr'><span id= '3'>罗恩</span></div>
        """
    # 【推荐】finditer匹配字符串中所有的内容[返回的是迭代器],从迭代器中拿到内容需要.group()
    # 预加载正则表达式,(?P<分组名称>正则表达式)可以单独从正则匹配的内容中进一步提取内容,标志处添加re.S是让.匹配换行符,即匹配任意字符。
    obj = re.compile(r"<div class= '(?P<class>.*?)'><span id= '(?P<id>\\d)'>(?P<name>.*?)</span></div>", re.S)
    result = obj.finditer(s)
    for i in result:
        print(i.group("class")+"    "+i.group("id")+"    "+i.group("name"))

效果:

tom    1    汤姆
kali    2    凯丽
lnr    3    罗恩

关注公众号,获取更多资料

以上是关于python爬虫 正则表达式 re.finditer 元字符 贪婪匹配 惰性匹配的主要内容,如果未能解决你的问题,请参考以下文章

Python爬虫_案例:使用正则表达式的爬虫

Python爬虫_案例:使用正则表达式的爬虫

python爬虫正则表达式

python3爬虫之入门和正则表达式

python爬虫之正则表达式

Python爬虫入门之正则表达式