【问题标题】:Delete html tags in sed or similar删除 sed 或类似中的 html 标签
【发布时间】:2011-09-29 06:48:00
【问题描述】:

我正在尝试从网页中获取表格内容。我只需要内容,但不需要标签<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 coumn2,info1,info2,info3

我尝试 sed 删除模式 &lt;tr&gt; &lt;td&gt; 但是当我获取表时还有其他标签,如 &lt;color&gt; &lt;span&gt; 等,所以我想要删除所有标签;简而言之,所有带有 的东西。

【问题讨论】:

  • 内容的规律性如何?您也许可以使用lynx 抓取页面并将其转换为文本,然后解析纯文本。很难说没有更多细节,屏幕抓取往往是各种丑陋黑客之间的选择。
  • 好的,这解决了第一个问题 sed -e 's/<.>//g' input 。并且对于上面的评论,我得到了页面并只刮掉了表格部分。所以文件只包含干净的表标签和数据。类似于考试时间表例程。

标签: html sed tags


【解决方案1】:

sed 's/&lt;[^&gt;]\+&gt;//g' 将删除所有标签,但您可能希望将它们替换为空格,以便彼此相邻的标签不会一起运行:&lt;td&gt;one&lt;/td&gt;&lt;td&gt;two&lt;/td&gt; 变为:onetwo。所以你可以做sed 's/&lt;[^&gt;]\+&gt;/ /g',所以它会输出one two(嗯,实际上是one two)。

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

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

【讨论】:

    【解决方案2】:

    原文:

    Mac Terminal 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 标题:

    $ curl -s google.com | sed 's/<[^>]*>//g' 
    
    301 Moved
    301 Moved
    The document has moved
    here.
    
    $
    

    【讨论】:

      猜你喜欢
      • 2013-11-21
      • 2014-11-16
      • 1970-01-01
      • 2017-03-06
      • 2020-06-19
      • 2016-03-13
      • 1970-01-01
      • 1970-01-01
      • 2013-02-18
      相关资源
      最近更新 更多