使用 curl 和 cut 在 unix 中的 HTML 标签内抓取信息

Scraping information within HTML tags in unix with curl and cut

我想找出最简单的方法从远程资源中获取HTML/XML标签之间的内容Unix。这是我认为它会起作用的方式。

curl https://www.google.com | grep "<title>" | cut -d '<title>' -f2 | cut -d '</title>' -f1

所以首先我 curl 资源,grep 出带有我想要的标签的行(这有时意味着整个 HTML,因为现在很多网站都被缩小了)。

然后我删掉了开头 <title> 之后的所有内容,最后我删掉了结尾 '' 之后的所有内容。

虽然这会导致错误:curl: (23) Failed writing body (0 != 8192)。 该错误似乎是因为 cut 不支持除单个字符外的任何分隔符。

我喜欢我的方法是一种非常简约的方式来获取我想要的数据,并且正在寻找另一种简单的方法来实现它。


此外,即使它确实有效,我的解决方案也只适用于 HTML 中的单个标签。出现多次的标签怎么办?

W3 的这套工具似乎适合您的用例。 http://www.w3.org/Tools/HTML-XML-utils/README

对于足够小的东西,您可以使用 this 这样的东西。 (我会用 Python+lxml 做其他事情)

记住:You can't parse [X]HTML with regex.

这在 py 或 php 等其他语言中可能更容易,但是包 html-xml-utils 提供了一个很棒的工具(其他名称为嗯。

示例(ec2 linux AMI):

sudo rpm -ivh html-xml-utils-6.7-2.1.x86_64.rpm 
curl https://www.google.com | hxselect title
... ... ...
<title>Google</title>

更多信息: - https://www.w3.org/Tools/HTML-XML-utils/README