HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2011
0410
Last Samui翻訳ページへの自動アクセス10解決


Last Samui

リンク

2011/4/10(Sun) 15:52:57|NO.38290

クリップボードに入れた英文を翻訳サイトに送り翻訳結果を受け取るプログラムが作りたいと思いました。
そこで、
1、Googleの翻訳ページを取得する
2、文字列データを送る
3、自動的に返ってくる翻訳データを受け取る
という段取りを考えました。

初めに、HSPヘルプの例題プログラムを参考にURL指定をGoogleの和訳ページに変更したら、

#include "hspinet.as"

;
; ファイルの取得(メモリ上に取得)
;
; 旧HSP3掲示板(onionsoft.net)のキーワード検索メニューを指定し、結果を取得します
;

netinit
if stat : dialog "ネット接続できません。" : end

; URLを指定
neturl "http://translate.google.co.jp/?hl=ja&tab=wT#en|ja|"

; GET形式でCGIにパラメーターを渡す
netrequest_get "betabbs.cgi?mode=find&page=0&list="

mes "DOWNLOAD 開始"

*main
; 結果待ちのためのループ
netexec res
if res > 0 : goto *comp
if res < 0 : goto *bad
await 50
goto *main

*bad
; エラー
neterror estr
mes "ERROR "+estr
stop

*comp
; 完了
mes "DOWNLOAD 完了"

netgetv buf
mesbox buf,640,400,1

stop

こうなります。一応当たり前ですがページは取得出来ました。

しかし、私の知識ではこれで終わりです。
後は皆目見当がつきません。
ネットアクセスに詳しい方、次のヒントを下さい。
ヒントを貰ってもわかるかどうか疑わしいけど、
何らかの手がかりをください。



この記事に返信する


Cookies

リンク

2011/4/10(Sun) 16:02:40|NO.38292

URL("http://translate.google.co.jp/?hl=ja&tab=wT#en|ja|")の最後に
英語のスペルを入れると翻訳されますよ。
たとえば"http://translate.google.co.jp/?hl=ja&tab=wT#en|ja|Hot%20Soup%20Processor"
にアクセスです!

%20は半角スペースのエンコードされたものだから"Hot Soup Processor"の翻訳結果が出ます。
あとは返ってきたHTMLの解析ですね。



Cookies

リンク

2011/4/10(Sun) 16:05:25|NO.38293

もうひとつ。
なんとなくわかると思いますが、#の後のenは翻訳元、jaは翻訳先をあらわし、
English->Japaneseになってます。

翻訳元の自動設定はautoです。



Cookies

リンク

2011/4/10(Sun) 17:54:56|NO.38305

やっとできた!!
GoogleにHSPでアクセスすると、モバイル版のソースが返ってくるようです。
返ってきたソースをそのままHTMLに書き込んで分かりました。
すると、name=qのinputがあり、そこに翻訳したい文字を入れるようです。
で、<form action="/m?hl=ja&q="〜のqにその翻訳したい文字が入り、送信されるようです。

だから、モバイル版のままでいいのであれば、"http://translate.google.co.jp/"
GET形式で"/m?hl=ja&q="+[検索したい文字]を送ってやればよいです。

サンプル

#include "hspinet.as" ; ; ファイルの取得(メモリ上に取得) ; ; Googleさんの翻訳サービス(モバイル版)にテスト文字列としてたくさん"today"を送って、 ; 返ってきたソースを表示します。 netinit if stat : dialog "ネット接続できません。" : end ; URLを指定 neturl "http://translate.google.co.jp/" ; GET形式でCGIにパラメーターを渡す netrequest_get "/m?hl=ja&q=today%20today%20today%20today%20today" mes "DOWNLOAD 開始" *main ; 結果待ちのためのループ netexec res if res > 0 : goto *comp if res < 0 : goto *bad await 50 goto *main *bad ; エラー neterror estr mes "ERROR "+estr stop *comp ; 完了 mes "DOWNLOAD 完了" netgetv buf mesbox buf,640,400,1 stop
そうするとソースの中に「<div dir="ltr" class="t0">今日は今日今日は今日、今日</div>」とあるのがわかりますでしょうか?



Cookies

リンク

2011/4/10(Sun) 18:38:06|NO.38308

よーし、PC用でも取得してやる!!
ユーザエージェントを変えて…netagent "Mozilla"でPC用が取得できるな。


…と思ったのですが、あれってフラッシュなんですね。
となると取得のしようがないか…残念。



Last Samui

リンク

2011/4/10(Sun) 20:53:19|NO.38315

#include "hspinet.as"

;
; ファイルの取得(メモリ上に取得)
;
; Googleさんの翻訳サービス(モバイル版)にテスト文字列としてたくさん"today"を送って、
; 返ってきたソースを表示します。

netinit
if stat : dialog "ネット接続できません。" : end

; URLを指定
neturl "http://translate.google.co.jp/"

; GET形式でCGIにパラメーターを渡す
netrequest_get "/m?hl=ja&q=today%20today%20today%20today%20today"

mes "DOWNLOAD 開始"

*main
; 結果待ちのためのループ
netexec res
if res > 0 : goto *comp
if res < 0 : goto *bad
await 50
goto *main

*bad
; エラー
neterror estr
mes "ERROR "+estr
stop

*comp
; 完了
mes "DOWNLOAD 完了"

netgetv buf

l=strlen(buf)
x=0
repeat l
if peek(buf,x)=34{
poke buf,x,96
}
x+=1
loop

sdim a,1000:sdim b,1000:sdim c,1000:sdim d,1000

a="<div dir=`ltr` class=`t0`>"

la=strlen(a)

x=0
repeat l-la
b=strmid(buf,x,la)
if b=a{
y=x+la
repeat l-(x+la+6)
c=strmid(buf,y,6)
if c="</div>"{
d=strmid(buf,x+la,y-(x+la)):break
}
y+=1
loop
}
x+=1
loop

color
pos 0,100
mes d
stop



Last Samui

リンク

2011/4/10(Sun) 21:25:19|NO.38318

お礼を書き忘れていました。
Cookiesさん、ありがとうございました。
文字列を変数に割り当てることができなかったので、無理やり『"』のマークを『`』に変換
しています。
全角文字への配慮は忘れました。



Cookies

リンク

2011/4/10(Sun) 21:28:36|NO.38319

まだ見てくれてるかな?

一つ書きたいことが。
slに変換元が入ります。
tlに変換先が入ります。

日→英は hl=ja&sl=ja&tl=en&q=〜 でできます。



Cookies

リンク

2011/4/10(Sun) 21:32:24|NO.38320

えっと、"は\"でできます。
a="<div dir=\"ltr\" class=\"t0\">"
です。
\はエスケープ文字というやつですね。



Last Samui

リンク

2011/4/10(Sun) 21:38:07|NO.38322

ご丁寧に、どうも。
今日は、勉強になりまくりでした。
ありがとうございました。



wass

リンク

2011/4/10(Sun) 21:54:57|NO.38324

Google Translate APIを使うほうがソースの改変にも対応できていいかも
http://d.hatena.ne.jp/nakamura001/20110320/1300628805



ONION software Copyright 1997-2021(c) All rights reserved.