【お題】NEW演歌

VB6でWebブラウザを使わず(つまりIE.Navigateをぜず)に、
Web画面の文字を取得したいのですが、
どのようなコードを書けばよいでしょうか。
ひとまずxmlHTTP オブジェクトをクリエイトしての文字列取得には成功したのですが、
こちらは xmlHTTP.Open "GET", "取得したいURL" と言う命令の方法になっており、
この方法だと、Web画面の一部の文字をクリックすることで、
別画面としてポップアップされる子画面の文字は取得が無理そうでした。
それは子画面が、"取得したいURL"ではなく別ものになるからです。

では 子画面のURLはわかるので Open "GET", "子画面のURL"
とするといけそうですが、親画面から起動した子画面でないと、
命令を認識しないと言う制約があるようでした。

別な表現をしますと、欲しい文字が子画面の文字なのですが、
別のURLとなっている為に取得できず、では、
xmlHTTP.Open "GET", "子画面のURL" としても、
親画面から何かを継続して表示したものでなければ、取得できない構造でした。
これはVB6のインターネットコントロールを使っても同様です。

Web画面のタイトル部分ならば、
GetWindowTextと言うAPI関数で取得できたのですが、
メイン画面から別に起動する子画面の全ての文字取得は、
実装ができませんでした。実装できる関数に心当たりはありませんか?

かくなる上はセンドキーで、Ctrl+A と Ctrl+C を送るのですが、
常にターゲットの画面にフォーカスを与えなくてはならず、
他のアプリの画面が使えなくなってしまいます。

VBドットネットであればこれらは解決できるでしょうか。
ドットネットを使ってもメインのURL画面から別URLで開く、
子画面の文字列取得は難しいように思っています。

取得のためのAPI関数が分かれば一番良いのですが、
アドバイスの程、よろしくお願いします。

A 回答 (3件)

子画面の表示をする様にどの様に HTTP 送受信を行っているか、


実際にブラウザを操作して通信内容を監視しましょう。
参考)
https://firefox-source-docs.mozilla.org/devtools …
https://developer.chrome.com/docs/devtools/netwo …

URL だけではなく
* HTTP 要求ヘッダ部
* POST 送信部
あたりに「何かを継続」する情報が入っているかと推測します。

例1)
親画面 URL から開かれたと明示しないとエラー処理
https://developer.mozilla.org/ja/docs/Web/HTTP/H …
例2)
親画面で生成したセッション ID を継続しないとエラー処理
https://developer.mozilla.org/ja/docs/Web/HTTP/C …

何かが判明できれば、あとは xmlHTTP で再現しましょう。
    • good
    • 0
この回答へのお礼

やはり何かを継続する情報・・・があるんですね。色々調べましたが3日間では解決しませんでした。今後も継続して調べて行きます。アドバイス真にありがとうございました

お礼日時:2024/09/23 20:41

VB6は古すぎて使い物になりませんしマイクロソフトもサポートを打ち切っています。



すでにVB.NETやC#が主流です。
    • good
    • 0

Cookie情報あたりだけの問題ならWinHttp.WinHttpRequest を利用するとできるそうですよ。


https://stackoverflow.com/questions/39709562/how …
✔がついてる回答のやつです。

サーバーアクセスによって何らかの正当性情報が送られていて、外部から制御しようがないと、ちょっとできませんね。

スクレイピングするにあたって、Chromeなどのデベロッパーツールを利用してどのようなネットワークアクセスが行われているのかを把握する必要があります。
それを理解した上でPostmanなどのツールによって試して、求める結果を得ることができれば成功ですね。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A