Python如何从XML中提取所有URL链接
#技术教程 发布时间: 2025-12-25
Python提取XML中URL的核心是用xml.etree.ElementTree或lxml解析并定位文本内容或href/src/url等属性中的HTTP/HTTPS链接,需去重、清洗、校验合法性并支持相对路径补全。
Python提取XML中的所有URL链接,核心是解析XML结构并定位包含URL的元素或属性。常用方法是用xml.etree.ElementTree(内置、轻量)或lxml(功能强、支持XPath和HTML容错)。URL通常出现在元素文本内容中(如),或作为属性值(如),需根据实际XML格式灵活处理。
使用ElementTree提取文本中的URL
适用于URL直接写在标签内的场景(如、、等)。ElementTree可递归遍历所有元素,检查其文本内容是否符合URL格式。
- 用
ET.iterparse()或ET.fromstring()加载XML - 遍历所有元素,检查
elem.text是否非空且以http://或https://开头 - 可配合
re.match(r'^https?://', text.strip())做简单校验
使用XPath从属性中提取URL(推荐lxml)
当URL藏在属性里(如href、src、url),XPath表达式更精准高效。lxml支持完整XPath语法,比ElementTree更灵活。
- 安装:
pip install lxml - 常用XPath:
//*[@href] | //*[@src] | //*[@url]匹配含这些属性的任意元素 - 再用
elem.get('href')等获取属性值,并过滤掉空值或非URL字符串
兼顾文本+属性,避免重复和无效链接
真实XML可能混合多种URL位置,还可能存在注释、CDATA、相对路径或空值。提取时建议统一去重、清洗和验证。
- 用
set()自动去重 - 对每个候选字符串调用
str.strip(),跳过空值和纯空白 - 用
urllib.parse.urlparse()判断是否为合法URL(scheme存在且为http/https) - 若需处理相对URL,可用
urllib.parse.urljoin(base_url, rel_url)补全
一个简洁可用的示例代码
以下用lxml实现“文本+常见属性”双路提取,带基础校验:
from lxml import etree from urllib.parse import urlparse技术教程SEOdef extract_urls_from_xml(xml_source): tree = etree.parse(xml_source) if hasattr(xml_source, 'read') else etree.fromstring(xml_source) urls = set()
# 提取属性中的URL for attr in ['href', 'src', 'url', 'xlink:href']: for elem in tree.xpath(f'//*[@{attr}]'): val = elem.get(attr, '').strip() if val and urlparse(val).scheme in ('http', 'https'): urls.add(val) # 提取文本中的URL(仅检查直系文本,避免混入子元素内容) for elem in tree.iter(): if elem.text and elem.text.strip(): text = elem.text.strip() if text.startswith(('http://', 'https://')): if urlparse(text).scheme in ('http', 'https'): urls.add(text) return list(urls)
使用示例
xml_data = '''
https://www./link/99efe6e00320edb6fac7ab90e845bb3e; ''' print(extract_urls_from_xml(xml_data))
上一篇 : 双主角!《如龙极3》官宣预购特典:带春日一番打群架
下一篇 : 怎么用AI创作音乐?零基础也能在5分钟内写出一首歌
-
SEO外包最佳选择国内专业的白帽SEO机构,熟知搜索算法,各行业企业站优化策略!
SEO公司
-
可定制SEO优化套餐基于整站优化与品牌搜索展现,定制个性化营销推广方案!
SEO套餐
-
SEO入门教程多年积累SEO实战案例,从新手到专家,从入门到精通,海量的SEO学习资料!
SEO教程
-
SEO项目资源高质量SEO项目资源,稀缺性外链,优质文案代写,老域名提权,云主机相关配置折扣!
SEO资源
-
SEO快速建站快速搭建符合搜索引擎友好的企业网站,协助备案,域名选择,服务器配置等相关服务!
SEO建站
-
快速搜索引擎优化建议没有任何SEO机构,可以承诺搜索引擎排名的具体位置,如果有,那么请您多注意!专业的SEO机构,一般情况下只能确保目标关键词进入到首页或者前几页,如果您有相关问题,欢迎咨询!
'):
urls.add(text)
return list(urls)