gpt4 book ai didi

html - 如何从泰米尔语网站的不同网页中按顺序提取英文文本?

转载 作者:可可西里 更新时间:2023-11-01 13:45:42 26 4
gpt4 key购买 nike

Naalayira Divya Prabandham 是一部用泰米尔语写成的 4000 节印度教诗歌集。网址http://dravidaveda.org 4000 节经文中的每一节都有一个网页。每节经文页都提供了泰米尔语经文、对这节经文的逐字泰米尔语评论和英文翻译。例如,here是第 1008 节的网页。

我的问题是,有没有什么方法可以按顺序提取所有 4000 节经文的英文翻译,这样我就可以在一个文档中获得 Naalayira Divya Prabandham 的完整英文翻译?例如,在我上面链接的网页中,我想提取“Singavel-Kundram 是纯洁的主以人狮的形式来到的地方,当世界惊叹不已时,撕裂了 Asura Hiranya 的胸膛用他的爪子。红眼睛的狮子通过在他的脚下堆积象牙来表达敬意。连同数字 1008,我想将它放在文档中的第 1008 位。

那么我该怎么做呢?我认为这可能需要某种编程,但我没有太多的技术背景,所以有人可以告诉我我需要做什么吗?请注意,文章 ID,例如 URL“dravidaveda.org/index.php?option=com_content&view=article&id=1379&ml=1”中的数字 1379,不要按节顺序排列,这样可能会有点从编程的角度来看问题。

最佳答案

您可以使用将网页内容转储到终端或控制台的软件/命令。例如 lynxw3mlinks 等(虽然也可以使用 wgetcurlaria2 等)。访问各个命令的手册页以获取更多信息。

这里我使用 lynx 提供示例:

#!/bin/bash
for i in {47..4568}
do
{
lynx -dump "http://dravidaveda.org/index.php?option=com_content&view=article&id=$i&ml=1" | head -n 1 >> ndp.txt
echo -e "\n" >> ndp.txt
lynx -dump "http://dravidaveda.org/index.php?option=com_content&view=article&id=$i&ml=1" | grep 'English Translation' -A 10 >> ndp.txt
echo -e "\n\n" >> ndp.txt
}
done;

此处 {47..4598} 将自动依次扩展为 47,48,....,4568。 (我发现可以从这个范围内获取 Nalayira Divya Prabandham)

1stlynx 命令将写入编号。名为 npd.txt

的文件中的诗句,例如 (1008)

2ndlynx 命令将在 npd.txt

中为该节编写“英文翻译”

因此,在 for 循环的帮助下,根据提供的范围,您将得到 no。文件 npd.txt 中带有英语翻译的诗句。

请注意,正如您所提到的,页面 ID 不会随后出现,因此很难预测编码时要跳过的 ID。无论如何,我认为您可以轻松地从 npd.txt 中删除不需要的页面 ID 中的这些行。

但是,如果您愿意,可以使用以下验证来跳过转储这些页面:

if [[ $(lynx -dump ""http://dravidaveda.org/index.php?option=com_content&view=article&id=$i&ml=1" | head -c 1) = "(" ]]
then
[Your commands here]
fi

此处在 if 条件中给出的表达式将检查我们要转储的页面的第一个字符是否为“(”。

因此,根据网页的内容,以下命令可能会起作用:

#!/bin/bash
for i in {47..4568}
do
{
if [[ $(lynx -dump "http://dravidaveda.org/index.php?option=com_content&view=article&id=$i&ml=1" | head -c 1) = "(" ]]
then
{
lynx -dump "http://dravidaveda.org/index.php?option=com_content&view=article&id=$i&ml=1" | head -n 1 >> ndp.txt
echo -e "\n" >> ndp.txt
lynx -dump "http://dravidaveda.org/index.php?option=com_content&view=article&id=$i&ml=1" | grep 'English Translation' -A 10 >> ndp.txt
echo -e "\n\n" >> ndp.txt
}
fi
}
done;

我已经检查过,上面的脚本在我的电脑上运行良好。


更新/改进:

文件 ndp.txt 中的诗句是非连续的,因为我们从网站上获取的诗句是非连续的。所以,最后可以使用以下命令对其进行排序(感谢 @terdon 的 perl 代码):

perl -ne 'if(/^\((\d+)\)\s*$/){$d=$1;} push @{$k{$d}},$_; END{print "@{$k{$_}}\n" for sort { $a <=> $b} keys(%k)} ' npd.txt

关于html - 如何从泰米尔语网站的不同网页中按顺序提取英文文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43972937/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com