解析网站的linux脚本(url)

问题描述:

因此,有这个网站显示最受欢迎的网站。我正在尝试编写一个脚本,其中包含两个参数:第一个是html文件,第二个是文本文件。所有的网站网址应到第二个参数,所以在最后的文本文件应包含的东西,如:解析网站的linux脚本(url)

http://www.website1.com/ 
http://www.website2.com/ 
... 

如果我说

cat argument1.html 

这样的东西印:

<a href="http://babelfish.altavista.com/babelfish/trurl_pagecontent?lp=en_nl&url=http%3A%2F%2Fwww.100bestwebsites.org%2F"><img src="Holland.gif" height="33" width="50"><br>DUTCH</a></font></div></td> 
    <td width="10%"> 
    <div align="center"><font face="Arial, Helvetica, sans-serif" size="2"><a href="http://babelfish.altavista.com/babelfish/trurl_pagecontent?lp=en_el&url=http%3A%2F%2Fwww.100bestwebsites.org%2F"><img src="Greece.gif" height="33" width="50"><br>GREEK</a></font></div></td> 

所以你们可以看到有一堆字符,但在中间的某个地方实际上是网站。我需要使用grep和sed。

任何帮助表示赞赏。我知道grep和sed的基础知识,但它只是基础知识是不够的。

+0

要使用sed的是这样一个痛苦的屁股,你就是最好做到这一点使用python/perl/ruby​​ ...其他任何东西。特别是因为你可能在同一行中有多个

+0

我认为[这是一个适当的参考](http://*.com/a/1732454/1270789)你正在尝试做什么。我认为,用''nokogiri''或'perl''''''''''''''''''''''''更好,而不是使用'grep'和'sed'来合适的HTML DOM解析器。 –

+0

哈哈哈@ KenY-N - 我能说什么,伟大的思想都一样;) –

在这里你去那么:

cat argument1.html | grep -o '<a href=['"'"'"][^"'"'"']*['"'"'"]' | sed -e 's/^<a href=["'"'"']//' -e 's/["'"'"']$//'

cat argument1.html | grep -o '<a .*href=.*>' | sed -e 's/<a/\n<a/g' | sed -e 's/<a .*href=['"'"'"]//' -e 's/["'"'"'].*$//' -e '/^$/ d'

信用:Easiest way to extract the urls from an html page using sed or awk only

+0

您能向我解释一下吗? – Haz

+0

解释正则表达式?我没有写这个,当我写了2个小时后的正则表达式时,我忘记了它的作用!我知道它的发现 s(第一grep),然后我迷路了#truth我通常用'python'来做这件事需要我

+2

@Haz。如果你正在为学校做作业,而你现在有工作代码,那么你应该自己动手解剖代码,以便理解它。取出管道的前两个部分并剪切/粘贴到命令行上。看看输出,直到你理解了(在从你的类中查询你的sed文档之后)发生了什么,然后添加另一部分管道,并观察输出中的变化与已添加的代码的匹配情况。重复,直到你可以通过你的班级的期末考试!祝你好运。 – shellter