2015-07-20 77 views
0

我正在嘗試使用wget從網頁中提取URLS直到用戶定義的n級 。我想這使用wget從URL中提取n級鏈接

wget -r -l$2 --reject=gif -O out.html www.google.com | sed -n 's/.*href="\([^"]*\).*/\1/p'` " 

它僅顯示第一級。它不解析任何水平 我怎麼能糾正它

+0

你是什麼「級別」是什麼意思? – shoover

+0

@shoover:-l2,-l3 ..等 將數字作爲參數 – maker

回答

0

有在命令行

wget -r -l$2 --reject=gif -O out.html www.google.com | sed -n 's/.*href="\([^"]*\).*/\1/p'` " 
  1. 有多餘的幾個問題'和「在命令的結束。他們是可能是複製粘貼錯誤
  2. 運行sed 's/.*href="\([^"]*\).*/\1/p'有一點幼稚,因爲大多數頁面可能在同一行上有很多引用,並且一些標記可能會分成多行。
  3. 正則表達式還沒有結束"所以參考加上行的其餘部分被打印
  4. 輸出寫入文件out.html並且沒有任何內容被轉發到標準輸出。它可以通過選項-O -進行更改。不幸的是,這個選項不適用於-r-lx。所以解決方案是存儲結果並執行兩個命令。
  5. www.google.com可能會返回302 Found,位置指向本地化的Google,而wget不會遞歸到本地化的頁面。

所以工作指令可(未測試 - 只是寫給你的靈感):

$ wget -nv -r -l1 --reject=gif -O x www.google.it 
WARNING: combining -O with -r or -p will mean that all downloaded content 
will be placed in the single file you specified. 

2015-07-21 14:30:26 URL:http://www.google.it/ [18842/18842] -> "x" [1] 
2015-07-21 14:30:26 URL:http://www.google.it/robots.txt [8170] -> "x" [1] 
2015-07-21 14:30:26 URL:http://www.google.it/images/srpr/nav_logo80.png [35615/35615] -> "x" [1] 
... 

$ cat x| sed -e 's/href="/\nhref="/g' | sed -n 's/.*href="\([^"]*"\).*/\1/p' 
/search?" 
/AA61D1355AF544A297B61B2A6E00FF1C&css_id=bubble.min.css" 
http://www.google.it/imghp?hl=it&tab=wi" 
http://maps.google.it/maps?hl=it&tab=wl" 
https://play.google.com/?hl=it&tab=w8" 
http://www.youtube.com/?gl=IT&tab=w1" 
...