[英]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在每行基础上工作,并且你的表达式延伸了几行。
我认为sed
或awk
更适合这项任务。
用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
hxnormalize预处理应用CSS选择器“ol”的hxselect的HTML代码。 Lynx将呈现代码并将其减少到浏览器中可见的内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.