我是一个新手程序员,目前正在搞乱java。我有一个想法,一个朋友告诉我的程序最好用bash执行,但我没有时间学习另一种编程语言。基本上,我希望它要求一个网址,然后转到该网址并在我指定的标签之间提取信息(当然使用正则表达式),然后将该信息放在Excel电子表格中。
答案 0 :(得分:2)
你应该在Mac上查看xmllint;用于Unix风格的xmlstarlet。我之前使用过两种类似的shell脚本,它做得很好。
例如
wget target_url -q -O - > test.html
xmlstarlet sel -t -c "!doctype/html/collection/item[property=1234]" test.html
可能会产生类似
的内容<item>
<foo>hello</foo>
<baz>world</baz>
<property>1234</property>
</item>
你必须知道你的文档树,以探索你正在搜索的标签'collection / item'只是一个例子。
如果你想在html抓取中获得真正的力量,请使用BeatifulSoup检查Python,但在这种情况下这将是过度的
答案 1 :(得分:1)
使用curl url&gt; out.txt,然后使用grep regex out.txt(获取包括正则表达式的行)。正如上面的评论所说,您可能希望使用真正的编程语言,这取决于您想要提取的内容,因为bash非常不可靠。
答案 2 :(得分:1)
虽然我同意在bash中解析html通常是一个坏主意,如果这是一次性的话,它可能是值得的。
例如,这会从给定的URL获取标题标记:
wget --no-check-certificate --quiet -O - http://someurl.com \
| paste -sd ' ' - \
| grep -o -e '<head[^>]*>.*</head>' \
| grep -o -e '<title>.*</title>' \
| cut -d '>' -f 2 \
| cut -d '<' -f 1 \
| tr -d ' ' \
| sed 's| *\(.*\)|\1|g' \
| paste -s -d '\n' -
有几种方法可能出错(标题标签不精确,多个标题标签)。在特定的情况下,我正在使用它,它的一次性将被人类审查。
如果您是BASH的新手,这可能会让您了解需要阅读的命令以便开始使用。如果您了解Java,请将其写入。