我正在尝试从网页中提取URL到用户定义的n个级别 使用wget。我试过这个
wget -r -l$2 --reject=gif -O out.html www.google.com | sed -n 's/.*href="\([^"]*\).*/\1/p'` "
它只显示第一级。它没有解析任何级别 我怎么能纠正它
答案 0 :(得分:0)
命令行中存在几个问题
wget -r -l$2 --reject=gif -O out.html www.google.com | sed -n 's/.*href="\([^"]*\).*/\1/p'` "
sed 's/.*href="\([^"]*\).*/\1/p'
有点天真,因为大多数页面可能在同一行上有很多引用,而某些标记可能会分成几行。"
因此打印参考加上其余行out.html
,并且不会将任何内容转发到stdout。它可以通过选项-O -
进行更改。很遗憾,此选项不适用于-r
和-lx
。所以解决方案是存储结果并执行两个命令。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"
...