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


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
0627
Hotdog検索エンジン9解決


Hotdog

リンク

2012/6/27(Wed) 00:21:31|NO.47387

以下で解決としましたが、まだ質問がございました。すみません。
http://hsp.tv/play/pforum.php?mode=all&num=47311

現在、汎用性のある検索エンジン自動入力ソフトを作成中です。
上記URLにおけるアドバイスによってcom操作により下[scr.1]のようにgoogle単体、またはyahoo単体
といったひとつの検索サイト単体での自動入力からの検索は可能になりました。

さて、ここで質問なのですが
ご覧のように[scr.1]14行目で文字列を送信する入力フォーム部品の名前を指定しておりますが
各サイトのHTMLを覗けばわかるように
googleでは
name="q"
(当該HTMLソース39行目)([scr.1]では例としてこちらを使用)
yahoo!では
name="p"
(当該HTMLソース93行目) などというようにサイトによって入力フォーム部品の名前は異なっております。

これにより現在汎用性がつけられない状況です。

サイトを指定すると入力フォーム部品の名前を突き止めるなどして
サイトを指定するだけで特定のキーワードを自動入力できる方法はございますでしょうか?
ご教授ください。

[scr.1]

newcom ie, "InternetExplorer.Application" ie("Visible")=1 ie->"Navigate" "http://google.jp/" repeat wait 10 : if( ie("Busy") == 0 ) { break } loop o = ie("Document") repeat wait 10 : if( o("readyState") == "complete" ) { break } loop //フォームに入力 o = ie("Document") o = o("forms",0) o = o("q") o("value") = "ABCD";キーワード //フォーム送信 o = ie("Document") o = o("forms",0) o->"submit" //IEオブジェクトを削除 delcom ie end



この記事に返信する


KA

リンク

2012/6/27(Wed) 07:36:47|NO.47389

サイトが分かっていて、そのフォームも分かっている。

それ以上、何を聞きたいのでしょうか。



Cookies

リンク

2012/6/28(Thu) 17:52:55|NO.47411

htmlで、検索用フォーム専用タグ、というのは存在しません。
inputがたくさんあるようなサイトはよく見ますが、
どうやってその中から検索用フォームを見つけるかですね。
人間なら「検索」とか書いてある部分を見つけて、
一番近いところにあるinputに入力するでしょうが。

あと質問者さんは汎用性についてinputのnameだけお考えのようですが、
たぶんformをページに複数作るのもhtml文法的に問題ないと思います。
そしたらformの特定からやらなきゃないんじゃないでしょうか

要素を羅列するだけならこれが参考になるかも。
http://www.tohoho-web.com/js/form.htm



Cookies

リンク

2012/6/28(Thu) 18:04:01|NO.47412

自分の発言、なんかフォームとインプットをごっちゃにしてました。
すみません。

まとめると、
どうやって他の用途に使うフォームとインプットもあるなかから
「検索用の」フォームとインプットを見分けるか、ということです。

URLは全てのフォーム/ インプットの羅列方法の参考です



Cookies

リンク

2012/6/28(Thu) 18:16:00|NO.47413

またレス申し訳ないです。
http://www.htmq.com/html5/input_type_search.shtml
にて、type=searchというinputの存在を確認しました。
さっきの「検索用フォーム専用タグが存在しない」というのは
(inputですが)嘘だということです。
ごめんなさい。

しかしhtml5のものであるので、あまり状況は変わらないかも?



Hotdog

リンク

2012/6/28(Thu) 20:25:20|NO.47415

やはり難しい問題でしょうか・・・

//フォームに入力 o = ie("Document") o = o("forms",0) o = o("q") o("value") = "ABCD";キーワード //フォーム送信 o = ie("Document") o = o("forms",0) o->"submit" //IEオブジェクトを削除 delcom ie end
の部分で

o = o("forms",0)
でフォームは指定できていますよね?
ならばname=""で指定されているフォーム部品名を別の変数(たとえばa)
に代入することはできないのでしょうか?



Cookies

リンク

2012/6/28(Thu) 21:34:23|NO.47416

さっきのurl
http://www.tohoho-web.com/js/form.htm
が参考になります、と。



Hotdog

リンク

2012/6/28(Thu) 23:42:35|NO.47418

なるほど。
javaでは

window.document.form.name
によってnameを取得できるのですね。
しかし頭が悪くまことに申し訳ないのですが、
HSPではそれをどのように記述、といいますか反映させればよろしいのでしょうか?
java記述そのままだと文法エラーがでますよね・・・
勉強不足で申し訳ございません。



inovia

リンク

2012/6/29(Fri) 01:52:43|NO.47419

>javaでは
JavaとJavaScriptはインドとインドネシアぐらい全く別物なので注意

質問の件についてはgetElementsByTagNameを使った方が楽そうなので、簡単なサンプルを書いてみました。
ただし、サイトによっては誤送信したり、正しく動かない可能性があります。
(テキストボックスが複数ある場合など)

手順としては
1. getElementsByTagNameでinputタグの要素ノードを検索
2. もしそれがtextだった場合はキーワードを代入
3. inputタグのformタグの要素ノードを取得
4. submitで送信


http://codetter.com/?p=702

keyword = "HSP" sites.0 = "http://www.google.co.jp/", "http://www.yahoo.co.jp/", "http://www.goo.ne.jp/" sites.3 = "http://www.excite.co.jp/", "http://jp.msn.com/", "http://www.infoseek.co.jp/" sites.6 = "http://www.livedoor.com/", "http://www.baidu.jp/", "http://www.naver.jp/" // 乱数 randomize site = sites(rnd(length(sites))) newcom ie, "InternetExplorer.Application" ie("Visible")=1 ie->"Navigate" site mes site repeat wait 10 : if( ie("Busy") == 0 ) { break } loop o = ie("Document") repeat wait 10 : if( o("readyState") == "complete" ) { break } loop pDoc = ie("Document") comres pInputs // inputを検索 pDoc->"getElementsByTagName" "input" num = pInputs("length") repeat num pInput = pInputs("item", cnt) // typeを取得する comres type pInput->"getAttribute" "type" // type = text の時 if type == "text" { // キーワードをセットする pInput("value") = keyword // formを参照 pFrom = pInput("form") // 送信 pFrom->"submit" break } loop delcom pFrom delcom pInput delcom pInputs delcom pDoc delcom ie end



Hotdog

リンク

2012/6/29(Fri) 02:07:23|NO.47420

なるほど。

javaとjavascriptをまったく混同しておりました・・・

そしてnameをいちいち検出しようとするのは遠回りでしたか。

勉強になりました。皆さんまことにありがとうございました。



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