正则表达式 – 使用awk sed或grep来解析来自网页源的URL

前端之家收集整理的这篇文章主要介绍了正则表达式 – 使用awk sed或grep来解析来自网页源的URL前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试解析下载的网页的来源,以获取链接列表.单行可以正常工作.这是我到目前为止所尝试的:

这似乎从一些页面名称中省略了部分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

解决方法

如果你只解析像< a>标签,你可以像这样匹配href属性

$cat file.html | grep -o -E 'href="([^"#]+)"' | cut -d'"' -f2 | sort | uniq

这将忽略锚,并保证你有独特的.这确实假设页面具有格式良好的(X)HTML,但您可以先将其传递给Tidy.

猜你在找的正则表达式相关文章