2015-07-20 75 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" 
...