根据表列,通过Shell脚本从HTML提取文本



我需要编写一个shell脚本,该脚本读取HTML文件sample.html并根据另一个表列从表列中提取数据。例如,这是HTML代码:

<table style="BORDER-COLLAPSE: collapse"
  border="0" bordercolor="#000000"
  cellpadding="3" cellspacing="0" width="100%" height="200">
  <tr >
    <td class="fontStyleOne" width="30%">
      <div align="left">
      core6690.myserverdomain.com </div>
    </td>
    <td  class="tdfontTwo" width="30%">
      <div class="label-styler" align="left">
      admin</div>
    </td>
  </tr>
  <tr >
    <td class="fontStyleOne" width="30%">
      <div align="left">
      core6691.myserverdomain.com </div>
    </td>
    <td  class="tdfontTwo" width="30%">
      <div class="label-styler" align="left">
      secondary </div>
    </td>
  </tr>
  <tr >
    <td  class="fontStyleOne" width="30%">
      <div align="left">
      core6692.myserverdomain.com </div>
    </td>
    <td  class="tdfontTwo" width="30%">
      <div class="label-styler" align="left">
      primary </div>
    </td>
  </tr>
</table>

假设我想确定"管理员"的URL,那么结果将为core6690.myserverdomain.com;如果我的输入是"主要",那么输出将为" core6692.myserverdomain.com"等...

HTML页面有更多数据,标题标签,页脚等等,但是我要寻找的重要内容位于代码中我列出的完全相同结构的表中,除了它有更多的行,不一定只有3个示例。

我已经在本网站上看到了相关的答案,即Seg,Grep,正则表达式,AWK和其他工具,但是它们都不足够接近我想要的东西...此外,我对任何一项都没有太多经验修改并使它们满足我的需求的方法。

有什么建议吗?预先感谢。

我的Xidel可以做到这一点,如果您可以使用其他工具。

with xpath:

xidel /tmp/f.html -e "//tr[td[2] = 'admin']/td[1]"

或模式匹配:

xidel /tmp/f.html -e "<tr><td>{.}</td><td>admin</td></tr>

至少这是您发布的摘录的方式,对于较大的文件,它取决于还有什么。

#/bin/bash
for i in `cat sample.html | grep '</div>' | sed 's/s+//'|sed 's/<.*>//'`; do
    if [ $i == $1 ];
    then
        echo $prev
    fi
    prev=$i
done

使用

的示例
$ ./filter.sh primary
core6692.myserverdomain.com

p.s:sample.html的格式应非常好,您在此处发布,服务器和名称应使用标签,并以whitespace或tab开始。

相关内容

  • 没有找到相关文章

最新更新