我正在尝试解析下载的网页的来源以获取链接列表。单行可以正常工作。这是我到目前为止所尝试的内容:
这似乎从一些页面名称中遗漏了部分URL。
$ cat file.html | grep -o -E '\b(([\w-]+://?|domain[.]org)[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|/)))'|sort -ut/ -k3
这会获取所有的URL,但我不想包含具有/是锚链接的链接。另外,我希望能够指定domain.org/folder /:
$ awk 'BEGIN{
RS="</a>"
IGNORECASE=1
}
{
for(o=1;o<=NF;o++){
if ( $o ~ /href/){
gsub(/.*href=\042/,"",$o)
gsub(/\042.*/,"",$o)
print $(o)
}
}
}' file.html
答案 0 :(得分:8)
如果你只解析像&lt; a&gt;标签,您可以像这样匹配href属性:
$ cat file.html | grep -o -E 'href="([^"#]+)"' | cut -d'"' -f2 | sort | uniq
这将忽略锚点,并保证你有独特的。这确实假设页面具有格式良好的(X)HTML,但您可以先将其传递给Tidy。
答案 1 :(得分:2)
lynx -dump http://www.ibm.com
在输出中查找字符串'References'。如果需要,可以使用sed
进行后处理。
使用不同的工具有时会使工作更简单。偶尔,一个不同的工具使工作变得简单。这是其中一次。