c语言编程笔录

首页 >   > 笔记大全

笔记大全

Python re模块在爬虫中的应用

更新时间:2023-11-26

Python中re模块的基础应用

Python中的re模块是一个正则表达式工具包,提供了一系列的函数来对字符串进行匹配和替换操作。以下是几个re模块的基础应用:

    import re

    # 匹配数字
    str1 = "123456789"
    pattern = "\d+"
    res = re.findall(pattern, str1)
    print(res)
    # 输出 ['123456789']

    # 匹配字符
    str2 = "this is a test!"
    pattern = "\w+"
    res = re.findall(pattern, str2)
    print(res)
    # 输出 ['this', 'is', 'a', 'test']

    # 匹配邮箱地址
    str3 = "my email is example@163.com"
    pattern = "\w+@[a-z0-9]+\.[a-z]+"
    res = re.findall(pattern, str3)
    print(res)
    # 输出 ['example@163.com']

re模块在爬虫中的高级应用

在进行爬虫开发时,re模块的高级应用是非常有用的。几个常用的场景如下:

1. 减少爬虫爬取的数据量

在爬取网页时,可以通过正则表达式的方式从HTML中提取需要的信息,从而减少爬虫所爬取的数据量,提高爬取效率。下面是一个通过正则表达式从HTML中提取图片链接的例子:

    import re
    import requests

    url = "https://www.example.com"
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"
    }

    res = requests.get(url, headers=headers)
    pattern = '(?<=src=")[^"]*\.jpg|png|gif(?=")'
    img_links = re.findall(pattern, res.text)
    print(img_links)

上述代码中,通过requests库请求指定url地址,然后使用正则表达式提取HTML中的jpg、png和gif格式的图片链接,提高爬取效率。

2. 数据清洗

爬取的数据往往包含大量无用信息,需要进行数据清洗。re模块提供了一系列的函数来方便的清洗数据。下面是一个例子:

    import re

    str1 = "hello world\nthis is\na test"
    pattern = "\n"
    res = re.sub(pattern, "", str1)
    print(res)
    # 输出 helloworldthis isa test

上述代码中,使用正则表达式将字符串中的"\n"替换为空,从而实现数据清洗的目的。

总结

Python中的re模块是一个极为有用的正则表达式工具包,可以用于实现字符串的匹配、替换和清洗等操作。在爬虫开发中,re模块的应用十分广泛,可以通过正则表达式实现对HTML文本的提取、数据清洗等操作,让爬虫的效率和准确性都有所提高。