簡體   English   中英

使用wget和regex進行數據抓取

[英]Data scraping with wget and regex

我只是在學習bash腳本,我試圖從網站上抓取一些數據,主要是wikitionary。 這就是我現在在命令行上嘗試但它沒有返回任何結果

wget -qO- http://en.wiktionary.org/wiki/robust | egrep '<ol>{[a-zA-Z]*[0-9]*}*</ol>'

我正在嘗試的是獲取標簽之間的數據,只是希望它們被顯示。 能幫我看看我做錯了嗎?

謝謝

你需要將輸出發送到stdout:

wget -q http://en.wiktionary.org/wiki/robust -q -O - | ...

要使用grep獲取所有<ol>標記,您可以執行以下操作:

wget -q http://en.wiktionary.org/wiki/robust -O - | tr '\n' ' ' | grep -o '<ol>.*</ol>'

至少你需要

  • 通過添加-e開關激活正則表達式。
  • 通過添加-O -選項將輸出從wget發送到stdout而不是磁盤

老實說,我會說grep是這個任務的錯誤工具,因為grep在每行基礎上工作,並且你的表達式延伸了幾行。

我認為sedawk更適合這項任務。

sed看起來像

wget -O - -q http://en.wiktionary.org/wiki/robust | sed -n "/<ol>/,/<\/ol>/p"

如果你想擺脫額外的<ol></ol>你可以追加

... | grep -v -E "</?ol>"

相關鏈接

如果我正確理解了這個問題,那么目標就是從ol-sections中提取可見文本內容。 我會這樣做:

wget -qO- http://en.wiktionary.org/wiki/robust | 
  hxnormalize -x | 
  hxselect "ol" | 
  lynx -stdin -dump -nolist

[來源: “使用Linux Shell進行網頁搜刮”]

hxnormalize預處理應用CSS選擇器“ol”的hxselect的HTML代碼。 Lynx將呈現代碼並將其減少到瀏覽器中可見的內容。

暫無
暫無

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

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