簡體   English   中英

使用awk sed或grep來解析來自網頁源的URL

[英]Using awk sed or grep to parse URLs from webpage source

我正在嘗試解析下載的網頁的來源,以獲取鏈接列表。 單行可以正常工作。 這是我到目前為止所嘗試的:

這似乎從一些頁面名稱中省略了部分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。

lynx -dump http://www.ibm.com

並在輸出中查找字符串'References'。 如果需要,可以使用sed后處理。

使用不同的工具有時會使工作更簡單。 偶爾,一個不同的工具使工作變得簡單。 這是其中一次。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM