1

我是一个新手程序员,目前正在搞乱java。我有一个程序的想法,一个朋友告诉我最好在 bash 中执行,但我没有时间学习另一种编程语言。基本上,我希望它请求一个 url,然后转到该 url 并提取我指定的标签之间的信息(当然使用正则表达式),然后将该信息放入 excel 电子表格中。

4

3 回答 3

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>

你必须知道你的文档树才能探索到你正在搜索的标签“收藏/项目”只是一个例子。

如果你想在 html 抓取中获得真正的力量,请使用 BeatifulSoup 检查 Python,但在这种情况下这将是矫枉过正

于 2013-05-16T21:22:03.950 回答
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,就用它来写。

于 2013-05-16T19:40:00.247 回答
1

使用 curl url > out.txt,然后使用 grep regex out.txt(获取包含正则表达式的行)。正如上面的评论所说,您可能希望根据要提取的内容使用真正的编程语言,因为 bash 非常不可靠。

于 2013-05-16T19:24:15.430 回答