Python 爬虫4——使用正则表达式筛选内容

本文介绍了Python中正则表达式的使用方法,包括基本概念、常用语法和re模块的应用技巧。通过实例演示如何进行文本匹配及提取。

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

        之前说过,使用urllib和urllib2,只是为了获取指定URL的html内容,而对内容进行解析和筛选,则需要借助python中的正则表达式来完成


一、预备知识:

1.正则表达式简述:

        什么是正则表达式?正则表达式就是可以匹配文本片段的模式,最简单的正则表达式就是一个字符串,用于在文本中匹配到此字符串自身。


2.常用正则表达式:

        设计正则表达式的时候有几个注意点如下:

a.特殊符号需要加转移符:如要匹配'china.com',则正则表达式格式应为'china\\.com';

b.字符集使用中括号[]来包含字符串组成字符集):如[a-z]表示匹配从a到z之间的字符;此外,还有一个反转字符集,使用^符号开头:如[^abc]表示匹配除了a、b、c三个字符之外的字符;

c.选择符:如要匹配'python'和'page',写出来的模式为'python|page',其中‘|’是管道符号;

d.子模式:如‘p(ython|age)’;

e.可选项在模式后面加上问好(?),那该模式就变成了可选项,即其可能出现在匹配到的字符串中,但是并非必须的,如r'(http://)?(www.)?shuhe.com'可匹配的结果有:

        http://www.shuhe.com、http://shuhe.com、www.shuhe.com、shuhe.com

f.重复子模式

        (pattern)*:允许模式重复0次或多次

        (pattern)+:允许模式重复1次或多次

        (pattern){m,n}:允许模式重复m~n次

例如:

        r'w*\.python\.org'匹配'www.python.org'、'.python.org'、'wwwwww.python.org'

        r'w+\.python\.org'匹配'w.python.org';但不匹配'.python.org'

        r'w{3,4}\.python\.org'只能匹配'www.python.org'和'wwww.python.org'


二、re模板的使用:

        在python中封装了一些常用的正则表达式在re模板中,使用时只需将该模板引入到当前项目中即可:

        

        上述是re中常用的正则表达式,使用步骤为:

        1.先将正则表达式的字符串形式编译为Pattern实例;

        2.然后使用Pattern实例处理文本并获得匹配结果(一个Match实例);

        3.最后使用Match实例获得信息,进行其他的操作。

例如:

# encoding: UTF-8
import re
 
# 将正则表达式编译成Pattern对象
pattern = re.compile(r'hello')
 
# 使用Pattern匹配文本,获得匹配结果,无法匹配时将返回None
match = pattern.match('hello world!')
 
if match:
    # 使用Match获得分组信息
    print match.group()
 
### 输出 ###
# hello
### Python 网络爬虫正则表达式在北京理工大学场景下的应用 #### 使用Python进行网络爬虫和信息提取的重要性 对于北京理工大学这样的学术机构而言,利用Python编写网络爬虫可以有效地收集公开发布的科研成果、课程资料以及其他教育资源。这不仅有助于提高研究效率,还能促进校内外之间的资源共享和技术交流。 #### 正则表达式的角色 在网络爬虫的数据清洗与处理阶段,正则表达式扮演着不可或缺的角色[^2]。借助于`re`模块所提供的功能,可以从网页源码中精准定位并抽取特定模式的内容,比如论文标题、作者姓名或是发表日期等重要字段。 #### 实际案例分析——以北理工官网为例 假设目标是从北京理工大学官方网站获取最新的新闻公告列表: 1. **导入必要的库** 需要先安装并引入几个常用的第三方包来辅助完成整个过程。 ```python import requests from bs4 import BeautifulSoup as soup import re ``` 2. **发送HTTP请求访问网站主页** 利用`requests.get()`方法向指定URL发起GET请求,并保存响应体至变量response内。 ```python url = "https://www.bit.edu.cn" headers = {'User-Agent': 'Mozilla/5.0'} response = requests.get(url, headers=headers) html_content = response.text ``` 3. **解析HTML文档结构** 创建BeautifulSoup对象以便后续操作更加便捷直观。 ```python page_soup = soup(html_content,"lxml") ``` 4. **定义匹配规则并通过正则表达式筛选有效条目** 这里采用了一个简单的例子说明如何运用正则表达式查找所有包含“通知”二字的通知链接。 ```python pattern = r'[\u4e00-\u9fa5]*通知' links = page_soup.find_all('a', href=True, text=re.compile(pattern)) for link in links: print(link['href']) ``` 上述代码片段实现了基本的功能框架,在此基础上还可以进一步优化和完善,例如增加异常捕获机制确保程序稳定性;调整搜索范围仅限于某些特定区域内的标签元素等等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值