在 sed 或类似工具中删除 html 标签

问题描述 投票:0回答:3

我正在尝试从网页中获取表格的内容。我只需要内容,但不需要标签

<tr></tr>
。我什至不需要“tr”或“td”,只需要内容。例如:

<td> I want only this </td>
<tr> and also this </tr>
<TABLE> only texts/numbers in between tags and not the tags. </TABLE>

我还想将第一列输出像这样放在一个新的 csv 文件中 列1、信息1、信息2、信息3 库n2,信息1,信息2,信息3

我尝试使用 sed 删除模式

<tr>
<td>
但是当我获取表时还有其他标签,如
<color>
<span>
等,所以我想要的是删除所有标签;简而言之,一切都与 < and > 有关。

html sed tags
3个回答
18
投票

sed 's/<[^>]\+>//g'
将删除所有标签,但您可能需要将它们替换为空格,以便彼此相邻的标签不会运行在一起:
<td>one</td><td>two</td>
变成:
onetwo
。所以你可以做
sed 's/<[^>]\+>/ /g'
这样它就会输出
one two
(好吧,实际上是
one two
)。

也就是说,除非您只需要原始文本,并且听起来您正在尝试在剥离标签后对数据进行一些转换,否则像 Perl 这样的脚本语言可能是更适合执行此操作的工具。

由于 mu 太短,提到抓取 HTML 可能有点冒险,使用真正为您解析 HTML 的东西将是最好的方法。 PHP 的 DOM API 对于这类事情来说非常好。


2
投票

原文:

Mac 终端 REGEX 的行为有点不同。我可以使用以下示例在我的 Mac 上执行此操作:

$ curl google.com | sed 's/<[^>]*>//g'
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   219  100   219    0     0    385      0 --:--:-- --:--:-- --:--:--   385

301 Moved
301 Moved
The document has moved
here.

$ bash --version
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin14)
Copyright (C) 2007 Free Software Foundation, Inc.

编辑:

为了澄清起见,原始内容如下:

$ curl googl.com
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="http://www.google.com/">here</A>.
</BODY></HTML>

还可以使用 -s 选项消除烦人的卷曲标头:

$ curl -s google.com | sed 's/<[^>]*>//g' 

301 Moved
301 Moved
The document has moved
here.

$

0
投票

这将删除指定的标签:

#!/usr/bin/python3

# based on: https://unix.stackexchange.com/a/606006/37153

import sys
from bs4 import BeautifulSoup

if len(sys.argv) != 3:
    print("2 args required: HTML/XML file, tag name")
    sys.exit(1)

with open(sys.argv[1]) as fp:
    soup = BeautifulSoup(fp, features="lxml")
for s in soup(sys.argv[2]):       # 🎩https://gist.github.com/leonardreidy/40381da2588126928058
    s.extract()
print(soup)
© www.soinside.com 2019 - 2024. All rights reserved.