Curl 是否有从不提供API的站点获取文本的替代方法?

Curl 是否有从不提供API的站点获取文本的替代方法?,curl,httprequest,httpresponse,Curl,Httprequest,Httpresponse,我们有一个用于Slack的机器人,它将接受以下输入: 圣经约翰福音3:17(ESV) 这将转换为对 https://www.biblegateway.com/passage/?search=John+3:17&version=ESV 因此,我们现在所做的就是将og.description显示出来,例如,对于上述内容,我们将得到: curl 'https://www.biblegateway.com/passage/?search=John+3:17&version=ESV' | grep

我们有一个用于Slack的机器人,它将接受以下输入:

圣经约翰福音3:17(ESV)

这将转换为对

https://www.biblegateway.com/passage/?search=John+3:17&version=ESV

因此,我们现在所做的就是将
og.description
显示出来,例如,对于上述内容,我们将得到:

curl 'https://www.biblegateway.com/passage/?search=John+3:17&version=ESV' | grep "og:description" | sed 's/.*content="//' | sed 's/".*//'

For God did not send his Son into the world to condemn the world, but in order that the world might be saved through him.
这对于较小的请求非常有效,例如,
圣经约翰福音3:1-4
——但是,如果我们请求较大的部分,说明字段在某一点被截断。因此,如果我们要做《圣经约翰福音3》,它只会返回约翰福音1的前5节左右的经文

除了上面的卷曲,还有更好的方法吗?响应中包含全文的唯一其他位置是原始html,例如:

<h1 class="passage-display"> <span class="passage-display-bcv">John 3</span><span class="passage-display-version">English Standard Version (ESV)</span></h1> [ ... etc. etc. ... ]
John 3英语标准版(ESV)[等]

除了http请求之外,我们还应该考虑其他方面吗?

如果您想坚持使用oneliner,但要更精确地了解所需内容,可以尝试Mojolicous Perl项目。语法:

这将从标记中解析出文本。对于一行中过于复杂的任务,请参见

安装Mojolicious很容易:

curl -L https://cpanmin.us | perl - -M https://cpan.metacpan.org -n Mojolicious

即使您不懂Perl,您也可能能够拼凑出刮片工作所需的内容,因为如果您使用过jQuery,DOM遍历的语法可能很熟悉。

用于经文查找的CLI非常快速且易于使用

提供程序为普通圣经提供程序(如Crossways ESV和Bible Gateway)提供一个干净的接口

当前(默认)提供程序是BibleGatewayScraper,它从圣经网关中提取经文


使用您喜欢的任何语言进行web抓取,可能是Java和JSoup或其他Python语言……因此,我对抓取特定标记感到困惑的是,该网站的标记封装似乎有点复杂——因此我不确定如何抓取我想要的标记(或者我想,我想要的所有标记):
curl -L https://cpanmin.us | perl - -M https://cpan.metacpan.org -n Mojolicious