掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Delphiからグーグルの検索結果を利用するには? (ID:24224)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
deldel様ありがとうございます。 大変参考になりました。 動作確認と不具合調査のため、回答が遅れてしまいました。 申し訳ございません。 deldelさんにご指導いただいた方法を試して、別ウィンドウでIEが開き、 検索結果が表示されました。 引き続きb-5)を実現したかったので、TWebBrowserを使う方法を調べて実装 してみました。 その結果、TWebBrowser上に検索結果が表示されました! ただ、HTMLソースをうまく取得できません。 次の記事を参考にしてみたものの、実行すると読み込みエラーが発生しています。 https://www.petitmonte.com/bbs/answers?question_id=1697 WEBで見かけた次のコードで試してみたところ、HTMLソースが取得できました。 ただ、HEADタグ内が返され、BODYタグが抜けてしまっているようです。 Memo1.Text:=WebBrowser1.OleObject.Document.documentElement.outerhtml; この点を解決するには、WebBrowser1.OleObject.Documentの部分の扱い方を勉強する 必要がありそうです。 検索してみたのですが、適当なキーワードなどがわかっていないためか、 うまく情報を見つけることができません。 よろしければ、正式な技術名やオススメのキーワードなど、ご指導いただけると幸いです。 ちょっと長いですが、ソースを添付させていただきます。 ----- unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, NMURL, ShellApi, OleCtrls, SHDocVw; type TForm1 = class(TForm) NMURL1: TNMURL; Edit1: TEdit; Button1: TButton; WebBrowser1: TWebBrowser; Button2: TButton; Memo1: TMemo; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure WebBrowser1NavigateComplete2(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant); private { Private 宣言 } public { Public 宣言 } end; var Form1: TForm1; implementation {$R *.dfm} //deldelさんにご指導いただいた方法→別WindowでIEが開き検索結果が表示される procedure TForm1.Button1Click(Sender: TObject); begin NMURL1.InputString := Edit1.Text; ShellExecute(Handle, nil, PChar('http://www.google.com/search?hl=ja&lr=lang_ja&ie=Shift_JIS&q=' + NMURL1.Encode), nil, nil, SW_SHOW); end; //TWebBrowserを使う方法を試してみる procedure TForm1.Button2Click(Sender: TObject); var URL: String; begin NMURL1.InputString := Edit1.Text; URL := 'http://www.google.com/search?hl=ja&lr=lang_ja&ie=Shift_JIS&q=' + NMURL1.Encode; //URLエンコードした結果を表示する ShowMessage(URL); //TWebBrowserで表示する WebBrowser1.Navigate(URL); end; procedure TForm1.WebBrowser1NavigateComplete2(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant); begin //ページが読み込まれたら、Memo1にソースを表示したい //HEADタグだけが表示される Memo1.Text:=WebBrowser1.OleObject.Document.documentElement.outerhtml; //検索結果←<BODY>タグがない { <HTML><HEAD><TITLE>入力キーワード - Google 検索</TITLE> <META http-equiv=content-type content="text/html; charset=UTF-8"> : (中略) : </HEAD></HTML> } //一部の文字のみが表示される //Memo1.Text:=WebBrowser1.OleObject.Document.documentElement.innerTEXT; //参考 //https://www.petitmonte.com/bbs/answers?question_id=1697 //読み込み違反エラーになってしまう //Memo1.Text := WebBrowser1.OleObject.Document.Body.InnerText end; end.
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.