如何使用bash提取没有标签的网页来源?

How to extract the source of a webpage without tags using bash?

我们可以使用 wgetcurl 下载页面源,但我想提取没有标签的页面源。 我的意思是将其提取为文本。

创建一个 Ruby 脚本,使用 Nokogiri 解析 HTML:

require 'nokogiri'
require 'open-uri'
html = Nokogiri::HTML(open '

text  = html.at('body').inner_text
puts text

Source

如果您更习惯使用 Javascript 或 Python 或搜索 html-to-text 实用程序,那么使用 Javascript 或 Python 可能会很简单。我想纯粹在 bash.

中做到这一点是非常困难的

另请参阅:bash command to covert html page to a text file

使用 Curl、Wget 和 Apache Tika Server(本地),您可以直接从命令行将 HTML 解析为简单文本。

首先,您必须从 Apache 站点下载 tika-server jar: https://tika.apache.org/download.html

然后,运行它作为一个本地服务器:

$ java -jar tika-server-1.12.jar

之后,您可以使用以下url开始解析文本:

http://localhost:9998/tika

现在,将网页HTML解析成简单的文本:

 $ wget -O test.html YOUR-HTML-URL && curl -H "Accept: text/plain" -T test.html http://localhost:9998/tika

那应该return没有标签的网页文字。

这样您就可以使用 wget 下载所需的网页并将其保存到 "test.html",然后您可以使用 curl 向 tika 服务器发送请求以提取文本。请注意,有必要发送 header "Accept: text/plain" 因为 tika 可以 return 多种格式,而不仅仅是纯文本。

您可以通过管道传输到一个简单的 sed 命令:

curl www.gnu.org | sed 's/<\/*[^>]*>//g'