Unix的 - 解析HTML文件,并得到他所有的资源列表(Unix - parse html fil

2019-09-30 04:52发布

我有一个HTML文件,我需要生成它使用所有的资源列表:的* .htm,*。html的,*的.css,* .js文件,* .JPG

我想,如grep和sed许多选项,没有太多的sucess。 另外我不知道该怎么办ITIN JAVA。

这是一个例子文件内容:

--------------------------------


>   <link rel="StyleSheet" href="css/webworks.css" type="text/css"
> media="all" />
>     <script type="text/javascript" language="JavaScript1.2"   src="wwhdata/common        /context.js">
>     /script>
>     <a class="WebWorks_Breadcrumb_Link" href="Page1.htm#1110364">Job Status</a> &gt;  Jobs tatus</div>
>     <div class="Indented"><a name="1115395">The <img class="Default"  src="images/Pic.2.jpg" width="26" height="29" style="display: inline;
 > float: none; left: 0.0; top: 0.0;" alt="" /> icon indicates that the
 > job is recurring. Hover the mouse over the icon to display the
     > schedule.</a></div>
 >     <div class="Body_Help_only"><a href="javascript:WWHClickedPopup('HelpSR2',   'Page4.htm#1110375', '');"
 > title="fsafsa" name="1118038">abcde</a></div>
 >     <div class="Body_Help_only"><a href="javascript:WWHClickedPopup('HelpSR2',   'Page2.htm#1110547', '');"
  > title="fsafsa" name="1118063">fsafsa</a></div>
  >     <div class="Body_Help_only"><a href="javascript:WWHClickedPopup('HelpSR2', 'Page3.htm#1110472', '');"
 > title="fsafasb" name="1118082">fsafsa</a></div>

输出应该是:

-----------------
css/webworks.css
wwhdata/common/context.js
Page1.htm
images/Pic.2.jpg
Page4.htm
Page2.htm
Page3.htm

Answer 1:

下面应该让你一些方法:

% sed -n -E 's/.*(href|src)="([^"]*).*/\2/p' input.html

-n表示不通过默认的打印线 ; 所述-E是指使用扩展正则表达式 (因此,我们可以使用交替的竖线); 尾随p上的取代是指打印出其对他们有成功的替换的任何行 。 总之,这个发现其有任何行href=src=在他们身上,通过替换之间的有什么整条生产线"..."或最多# ,并打印出结果。

您的输入,这将产生:

css/webworks.css
wwhdata/common/context.js
Page1.htm
images/Pic.2.jpg
javascript:WWHClickedPopup('HelpSR2',   'Page4.htm
javascript:WWHClickedPopup('HelpSR2',   'Page2.htm
javascript:WWHClickedPopup('HelpSR2', 'Page3.htm

这个简单的版本限制:

  • 如果有一个以上的href或SRC一行将无法正常工作;
  • 它不能提取JavaScript参数的内容;
  • 它假定输入使用"..." ,而不是'...'来分隔文件名。

每一个这些或许可以通过适当增加的sed脚本来改善,尽管第二很可能是最好通过另一sed脚本或发送输出做...

% cat /tmp/t.sed
s/.*(href|src)="([^#"]*).*/\2/
s/javascript.*'//
t x
b
:x
p
% sed -n -E -f /tmp/t.sed /tmp/so.txt
css/webworks.css
wwhdata/common/context.js
Page1.htm
images/Pic.2.jpg
Page4.htm
Page2.htm
Page3.htm
%

这最后一个是一个有点特殊! 我将离开你和联机帮助制定出细节。



Answer 2:

使用JSOUP

jsoup是一个Java库与现实世界的HTML工作。 它提供了提取和操纵数据,用最好的DOM,CSS和jQuery样方法的一个非常方便的API。



文章来源: Unix - parse html file and get all his resources list