我想通过bash命令行上的标准Hepburn system来音译包括汉字在内的通用日语。
我已经评估了几个选项,但是
所以我想解析http://nihongo.j-talk.com的输出 输出位于div.outputwrap或div.output
中如果纯粹使用Bash工具(curl / jq?)这样做是徒劳的,我怎么能用Python / BeautifulSoup来达到这个目的?
很抱歉没有提供代码片段,我不知道如何将数据发布到网站,如果没有API则使用结果。
答案 0 :(得分:0)
看一下http://nihongo.j-talk.com网站的源代码html,我猜测了API 以下是步骤:
1)通过wget将日语字符串发送到服务器并获取index.html中的结果 2)解析index.html并提取Romaji字符串。
以下是示例代码:
#!/bin/bash
string="日本語は、主に日本で使われている言語である。日本では法規によって「公用語」として規定されているわけではないが、各種法令(裁判所法第74条、会社計算規則第57条、特許法施行規則第2条など)において日本語を用いることが定められるなど事実>上の公用語となっており、学校教育の「国語」でも教えられる。"
uniqid="46a7e5f7e7c7d8a7d9636ecb077da485479b66bc"
wget -N --post-data "uniqid=$uiqid&Submit='Translate Now'&kanji_parts=standard&kanji=$string&converter=spaced&kana_output=romaji" http://nihongo.j-talk.com/ > /dev/null 2>&1
perl -e '
$file = "index.html";
open(FH, $file) or die "$file: $!\n";
while (<FH>) {
if (/<div id=.spaced. class=.romaji.>(.+)/) {
($str = $1) =~ s/<.*?>//g;
$str =~ s/\&\#(\d+);/&utfconv($1)/eg;
print $str, "\n";
}
}
# utf16 to utf8
sub utfconv {
$utf16 = shift;
my $upper = ($utf16 >> 6) & 0b0001_1111 | 0b1100_0000;
my $lower = $utf16 & 0b0011_1111 | 0b1000_0000;
pack("C2", $upper, $lower);
}'
一些评论:
- 我用Perl编写了解析器,因为它对我来说比较熟悉,但你可以通过读取index.html文件修改或转换为其他语言。
- uniqid字符串是我从网站的html源中选取的。如果它不能正常工作,请确保嵌入在html源代码中的内容。
希望这有帮助。