You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python提取网页抓取结果中特定子串间的目标字符串?

Python 网页抓取目标内容提取方案

核心思路

利用正则表达式匹配固定格式的目标元素,直接提取<p>数字.内容</p>中的核心内容,这种方式比split或切片更稳定,能适配重复数百次的模式。

代码实现

基础版本

import re

# 模拟抓取到的原始数据列表
raw_data = [
    '<p>xxx<p>', '<p>1.apple</p>', '<p>aaa</p>', '<p>xxxxx</p>',
    '<p>xxxxx</p>', '<p>2.orange</p>', '<p>aaa</p>', '<p>xxxxx</p>',
    '<p>3.banana</p>', '<p>aaa</p>', '<p>xxxxx</p>'
]

# 定义正则规则:匹配<p>数字.内容</p>的结构,捕获中间的目标内容
match_pattern = re.compile(r'<p>\d+\.(.*)</p>')

# 遍历提取目标内容
target_content = []
for item in raw_data:
    match_result = match_pattern.search(item)
    if match_result:
        target_content.append(match_result.group(1))

# 输出期望的有序列表格式
for idx, content in enumerate(target_content, start=1):
    print(f"<li><p>{content}</p></li>")

简化版本(列表推导式)

import re

raw_data = [
    '<p>xxx<p>', '<p>1.apple</p>', '<p>aaa</p>', '<p>xxxxx</p>',
    '<p>xxxxx</p>', '<p>2.orange</p>', '<p>aaa</p>', '<p>xxxxx</p>',
    '<p>3.banana</p>', '<p>aaa</p>', '<p>xxxxx</p>'
]

match_pattern = re.compile(r'<p>\d+\.(.*)</p>')
target_content = [match.group(1) for item in raw_data if (match := match_pattern.search(item))]

# 生成目标格式输出
for idx, content in enumerate(target_content, start=1):
    print(f"{idx}. <p>{content}</p>")

正则规则说明

  • <p>\d+:匹配开头的<p>标签和一个或多个数字
  • \.:匹配点号(正则中点号是特殊字符,需转义)
  • (.*):捕获任意长度的目标内容(即我们需要的apple、orange等)
  • </p>:匹配结尾的</p>标签

内容的提问来源于stack exchange,提问作者poon cl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 08:25:56