python—【爬虫】学习_2(正则表达式篇)3.re模块函数的深入理解

本文详细介绍了Python中正则表达式的使用方法,包括模式对象的编译、搜索、查找等功能,以及如何利用urlretrieve函数下载网络资源,如图片等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. re.complie()

作用:如果需要重复地使用某个正则表达式,那么你可以先将该正则表达式编译成模式对象。complie()函数就帮助我们将正则表达式,编译成为一个pattern对象。

2.re.search(pattern ,string)

regex.search(string[, pos[, endpos]])
 

pattern = re.compile("d") 

>>> result = pattern.search("dog") 

>>> result

# Match at index 0 <_sre.SRE_Match object; span=(0, 1), match='d'> 

>>> pattern.search("dog", 1) 

# No match; search doesn't include 

但是他并不会返回你需要的字符串,而是返回存在的范围,这时候,就需要group函数。

>> result.group()

"d"

>> result.start()

"0"

>>result.end()

"1"
>>result.span()
(0,1)

3.re.findall(pattern,string)返回了一个list

 

注:如果findall中的pattern包含着子组的话,即用小括号圈起来的,就会把子组内容单独圈起来。

如果存在多个子组,那么就会把多个子组组合起来构成元组。

这个时候,为了防止瞎匹配,一般使用(?:的语法进行即可。

 

3.url.request.urlretrieve(url, filename, reporthook, data)

一般用来直接下载图片,filename为保存的名字。后面参数None即可。

贴吧照片爬取:

from urllib import request
import re

def open_url(url):
    req = request.Request(url)
    req.add_header('User-Agent','Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36')
    page = request.urlopen(req)
    html =page.read().decode('utf-8')
    return html

def get_img(html):
    pattern = r'<img class="BDE_Image" src="([^"]+\.jpg)"'#[^"]+表示匹配多个不为^的字符
    imglist = re.findall(pattern,html)

    for each in imglist:
        filename = each.split("/")[-1]
        request.urlretrieve(each,filename,None)

if __name__ == '__main__':
    url = "http://tieba.baidu.com/p/5921006596"
    get_img(open_url(url))

    

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值