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

如何用Grep从HTML文件提取图片URL、商品名并移除a href元素

解决方案

方案1:使用AWK脚本处理(无需额外工具)

AWK可以逐行扫描文件,提取并整理所需内容,适合处理格式固定的HTML文件。

创建一个名为extract.awk的脚本:

BEGIN {
    # 定义域名前缀
    domain = "https://domainn.com"
}

# 匹配img标签,提取src属性值
/<img src="([^"]+)"/ {
    # 提取src内容,处理开头可能存在的斜杠,避免重复拼接
    img_src = domain "/" gensub(/^\/?/, "", 1, gensub(/src="|"|>/, "", "g", $0))
}

# 匹配<br>标签,提取后面的商品名称
/<br>/ {
    # 截取<br>之后的文本,去除前后空白字符
    product_name = substr($0, index($0, "<br>") + 4)
    gsub(/^\s+|\s+$/, "", product_name)
}

# 遇到</a>标签时,输出格式化后的结果
/<\/a>/ {
    printf "<p><a href=\"%s/\" rel=\"nofollow noreferrer\">%s/</a>\n%s</p>\n", img_src, img_src, product_name
    # 重置变量,避免影响下一个条目
    img_src = ""
    product_name = ""
}

执行命令:

awk -f extract.awk your-html-file.html

方案2:用Sed+Grep+Paste组合命令

通过多个基础命令配合,分步完成移除标签、提取内容和格式拼接:

# 同时提取图片URL和商品名称,拼接成目标格式
paste <(
    # 提取img的src并补全域名前缀
    grep -oP '<img src="\K[^"]+' your-html-file.html | sed 's/^/https:\/\/domainn.com\//'
) <(
    # 提取<br>后的商品名称,去除前后空白
    grep -oP '<br>\s*\K[^<]+' your-html-file.html | sed 's/^\s*//; s/\s*$//'
) | while read img product; do
    echo "<p><a href=\"$img/\" rel=\"nofollow noreferrer\">$img/</a>"
    echo "$product</p>"
done

方案3:用Pup+JQ解析HTML(更可靠)

如果HTML格式可能存在变化,推荐使用专业的HTML解析工具pup和JSON处理工具jq,避免正则解析HTML的局限性。

先安装依赖(以Debian/Ubuntu为例):

sudo apt install pup jq

执行提取命令:

pup 'div.cell small-6 medium-4 large-3 a json{}' your-html-file.html | \
jq -r '.[] | 
    .children[] | 
    select(.tag == "img") | 
    .attrs.src as $img | 
    .nextSibling.text as $name | 
    "<p><a href=\"https://domainn.com/\($img)/\" rel=\"nofollow noreferrer\">https://domainn.com/\($img)/</a>\n\($name)</p>"'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 19:12:47