2009-07-14 49 views
0

我受到另一個問題的啓發,編寫一個腳本(或者說一行代碼)來抓取隨機維基百科頁面。控制檯輸出爲什麼返回到行首?或者爲什麼我的連接不連接?

這裏是我到目前爲止有:

# Grab the HTTP header response from Wikipedia's random page link 
curl 'http://en.wikipedia.org/wiki/Special:Random' -sI 

# Search STDIN for the Location header and grab its content 
perl -wnl -e '/Location: (.*)/ and print $1;' 

而這個工作。它輸出一個隨機的維基百科URL到控制檯。但是我需要追加「?printable = yes」到該網址以獲取維基百科頁面,而沒有所有非文章內容。

但是,在運行:

curl 'http://en.wikipedia.org/wiki/Special:Random' -sI | perl -wnl -e '/Location: (.*)/ and print $1 . "?printable=yes";' 

輸出: 可印刷= yespedia.org /維基/ James_Keene_(足球運動員)

爲什麼我不級聯串接?

UPDATE:

對於好奇,這裏是一個班輪在其完成:

curl `curl 'http://en.wikipedia.org/wiki/Special:Random' -sI | perl -wnl -e '/Location: ([^\r]*)/ and print $1 . "?printable=yes";'` 
+0

請將標題解釋爲更有意義的內容。 – 2009-07-14 23:49:04

+0

我願意接受建議。 – 2009-07-15 02:05:44

回答

2
curl 'http://en.wikipedia.org/wiki/Special:Random' -sI | perl -wnl -e '/Location: (.*)/ and chomp($1) and print $1 . "?printable=yes";' 

未經檢驗的,但這應該工作。返回到行首是由位置行末尾的流氓'\ r'字符引起的。該腳本正在打印維基百科URL,並以'\ r'結尾,並返回到行的開頭,然後繼續打印?printable=yes。 Chomp將刪除'\ r'字符。

相關問題