【python】python指南(三):使用正则表达式re提取文本中的http链接

简介: 【python】python指南(三):使用正则表达式re提取文本中的http链接

一、引言

对于算法工程师来说,语言从来都不是关键,关键是快速学习以及解决问题的能力。大学的时候参加ACM/ICPC一直使用的是C语言,实习的时候做一个算法策略后台用的是php,毕业后做策略算法开发,因为要用spark,所以写了scala,后来用基于storm开发实时策略,用的java。至于python,从日常用hive做数据策略用python写udf,到基于tensorflow深度学习框架写python版的模型网络,再到现在实用pytorch做大模型。眼看着在语言纷争中,python的应用越来越广,开一个单独的专栏用于记录python中常用到的技巧,算是做笔记,没事翻出来看看。

本文重点介绍如何使用python正则表达式re提取一段内容中的链接。

二、参数解析器(ArgumentParser)

2.1 概述

我们日常处理的文本中,有很多内容和链接混合在一起的情况,有时需要我们提取链接,获取链接内的内容,有时希望把链接去掉,今天看一段分离内容和链接的代码。

2.2 代码示例

import re
 
def extract_links(text):
    # 正则表达式匹配URL
    pattern = r'http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\\(\\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+'
    # 查找所有匹配的URL
    links = re.findall(pattern, text)
    text_blocks = re.split(pattern, text)
    combined_text = ''.join(text_blocks)
    return links,combined_text
 
# 测试函数
text = "这是一个https://hhhh.org段网络上的内容,https://www.example.org里面偷偷卖了一个卖货的链接"
print(extract_links(text))

这里重点看一下正则表达式部分,主要思路是先将http://链接头分离出来,接着枚举所有链接可能出现的字母、数字、常用符号、特殊符号、空格、十六进制数字等,最后用+表示以上字符可以出现一次或多次,具体如下:

  • http[s]?://:这部分匹配URL的协议部分,即http://或https://。s?表示s是可选的,即可以有也可以没有。
  • (?:...):这是一个非捕获分组,意味着它不会捕获匹配的文本,只用于分组表达式以应用量词或其他操作。
  • [a-zA-Z]|[0-9]:这部分匹配字母或数字,|表示或,即匹配其中任何一个。
  • [$-_@.&+]:这部分匹配特定的符号,包括$、-、_、@、.、&和+。
  • [!*\\(\\),]:这部分匹配更多的符号,包括!、*、\、(、)和,。
  • (?:%[0-9a-fA-F][0-9a-fA-F]):这部分用于匹配URL编码的字符,如%20代表空格。[0-9a-fA-F]匹配十六进制数字。
  • +:这是一个量词,表示前面的模式可以出现一次或多次。

三、总结

本文以一个简单的python脚本演示如何通过正则表达式re库分离内容中的文本和链接,希望可以帮助到您。

目录
相关文章
|
2月前
|
数据采集 监控 数据安全/隐私保护
Python正则表达式:用"模式密码"解锁复杂字符串
正则表达式是处理字符串的强大工具,本文以Python的`re`模块为核心,详细解析其原理与应用。从基础语法如字符类、量词到进阶技巧如贪婪匹配与预定义字符集,结合日志分析、数据清洗及网络爬虫等实战场景,展示正则表达式的强大功能。同时探讨性能优化策略(如预编译)和常见错误解决方案,帮助开发者高效掌握这一“瑞士军刀”。最后提醒,合理使用正则表达式,避免过度复杂化,追求简洁优雅的代码风格。
77 0
|
2月前
|
Python
使用Python实现multipart/form-data文件接收的http服务器
至此,使用Python实现一个可以接收 'multipart/form-data' 文件的HTTP服务器的步骤就讲解完毕了。希望通过我的讲解,你可以更好地理解其中的逻辑,另外,你也可以尝试在实际项目中运用这方面的知识。
183 69
|
24天前
|
数据采集 存储 前端开发
Python爬虫自动化:批量抓取网页中的A链接
Python爬虫自动化:批量抓取网页中的A链接
|
27天前
|
存储 机器学习/深度学习 人工智能
多模态RAG实战指南:完整Python代码实现AI同时理解图片、表格和文本
本文探讨了多模态RAG系统的最优实现方案,通过模态特定处理与后期融合技术,在性能、准确性和复杂度间达成平衡。系统包含文档分割、内容提取、HTML转换、语义分块及向量化存储五大模块,有效保留结构和关系信息。相比传统方法,该方案显著提升了复杂查询的检索精度(+23%),并支持灵活升级。文章还介绍了查询处理机制与优势对比,为构建高效多模态RAG系统提供了实践指导。
242 0
多模态RAG实战指南:完整Python代码实现AI同时理解图片、表格和文本
|
3月前
|
数据采集 XML JavaScript
Python爬虫:从人民网提取视频链接的完整指南
Python爬虫:从人民网提取视频链接的完整指南
|
6月前
|
数据采集 网络安全 Python
【Python】怎么解决:urllib.error.HTTPError: HTTP Error 403: Forbidden
解决 `urllib.error.HTTPError: HTTP Error 403: Forbidden`错误需要根据具体情况进行不同的尝试。通过检查URL、模拟浏览器请求、使用代理服务器和Cookies、减慢请求速度、使用随机的User-Agent以及使用更加方便的 `requests`库,可以有效解决此类问题。通过逐步分析和调试,可以找到最合适的解决方案。
445 18
|
6月前
|
数据采集 数据安全/隐私保护 Python
【Python】已解决:urllib.error.HTTPError: HTTP Error 403: Forbidden
通过上述方法,可以有效解决 `urllib.error.HTTPError: HTTP Error 403: Forbidden` 错误。具体选择哪种方法取决于服务器对请求的限制。通常情况下,添加用户代理和模拟浏览器请求是最常见且有效的解决方案。
423 10
|
6月前
|
数据采集 JSON 测试技术
Grequests,非常 Nice 的 Python 异步 HTTP 请求神器
在Python开发中,处理HTTP请求至关重要。`grequests`库基于`requests`,支持异步请求,通过`gevent`实现并发,提高性能。本文介绍了`grequests`的安装、基本与高级功能,如GET/POST请求、并发控制等,并探讨其在实际项目中的应用。
152 3
|
8月前
|
数据采集 前端开发 算法
Python Requests 的高级使用技巧:应对复杂 HTTP 请求场景
本文介绍了如何使用 Python 的 `requests` 库应对复杂的 HTTP 请求场景,包括 Spider Trap(蜘蛛陷阱)、SESSION 访问限制和请求频率限制。通过代理、CSS 类链接数控制、多账号切换和限流算法等技术手段,提高爬虫的稳定性和效率,增强在反爬虫环境中的生存能力。文中提供了详细的代码示例,帮助读者掌握这些高级用法。
525 1
Python Requests 的高级使用技巧:应对复杂 HTTP 请求场景
|
7月前
|
Python
在Python中,可以使用内置的`re`模块来处理正则表达式
在Python中,可以使用内置的`re`模块来处理正则表达式
177 5

推荐镜像

更多