IEをロードし、WebページをスクレイピングしてからIEを閉じるコードがあります。
IEが開いているのを物理的に確認できるため、コードの実行に少し時間がかかると思います(間違っている場合は修正してください)。
問題は、IEを非表示にしてコードを実行したい場合です。情報を破棄した後、IEプロセスのそれぞれを終了するために最後に記述する必要はありません。 下記参照:
Set wb = CreateObject("internetExplorer.Application")
sURL = Cells(i, 10)
wb.Navigate sURL
wb.Visible = True
Do While wb.Busy = True Or wb.ReadyState <> 4: DoEvents: Loop
On Error Resume Next
'scraping code here
wb.Quit
Set wb = Nothing
'rest of the code here
したがって、wb.Visible = Falseの場合、wb.Quitは機能せず、IEがプロセスとして実行されていることを引き続き確認できます(もちろん、これは多くのメモリを使用し、メモリ不足により最終的にコードがクラッシュします)。プロセスを終了するには何を書く必要がありますか?それとも無意味な運動ですか?
ありがとうございました
- 解決した方法 # 1
関連記事
- python - URLの変数を使用してWebサイトの複数のページのデータのループスクレイピング
- javascript - トリミングプラグインを使用して透明な背景を回避する方法
- HTTPエラー404が発生するPythonを使用したWebスクレイピング:見つかりません
- Rails 5でバックグラウンドプロセスを実行する最良の方法は何ですか?
- Rを使用してPDFからデータをスクレイピングする
- beautifulsoup - Beautiful Soupを使用したPythonによるWebスクレイピングプログラムのエラー
- PythonでSeleniumを使用してテキスト値をスクレイピングする
- r - dplyrプロセスでカスタム関数を使用する
- multithreading - クライアントとしてブラウザを凍結せずにSpringでdeferredResultを使用してバックグラウンドでタスクを実行する
- Aerospikeを使用して、キーの組み合わせによって一意性が定義されるデータを処理する
- python - 美しいスープを使用したスクレイピングが特定のURLで期待どおりに機能しない
- logging - バックグラウンドプロセスがまだパイピングされている場合、コマンド 'exit'は機能しません
- css - scssランダム関数を使用してランダムな背景色を適用する
- javascript - ChartJSを使用してCanvasに「データなし」を表示する背景を追加する方法
- ios - NSTimerを使用してバックグラウンドスレッドの実行を一時停止する
- JavaScriptを使用してHTMLドキュメントの背景色をどのように変更しますか
- docker composeを使用してバックグラウンドでubuntuコンテナーを実行する
- C#を使用してExcelセルの背景色に塗りつぶしを使用しない方法は?
- スプリングバッチを使用してcobolフラットフィードファイル(異なるフォーマット)を処理する
関連した質問
- html - 適切なWebサイトデータをExcelに取得できない
- excel - 反復回数が異なる入れ子のループ
- excel - 2つのサブルーチン間で値を渡す際のエラー
- excel - VBA:オプションパラメータの確認
- Excel VBA - Excel VBA:新しいドライブにファイルを保存した後、シェルを使用してバッチファイルを実行する
- excel - 最初の2列A〜Zを並べ替えるにはどうすればよいですか。
- excel - VBAの複数列コンボボックスの空白行を削除する
- Excel VBA(おそらく)VBAで作成されたフォームによって追加されたデータを並べ替えようとしています
- excel - 特定の行範囲を削除するマクロ
問題の要素に対してそのページに対してXMLTTPRequestを発行することはできません。
そのため、その情報を取得する2つの方法があります。 2つ目は、クリックする方法を示しています。メソッドは、待機する方法、適切に閉じる方法、および適切に参照する方法を示します。
方法1:Internet Explorer
上記に、要素がすぐに利用できない場合に備えて、タイムアウト付きのループを含めました。
方法2:Selenium Basic
Selenium basicは、VB.Net、VBA、およびVBScript用のブラウザー自動化フレームワークです。
これは、ヘッドレスブラウザインスタンスを実行する方法を示しています。
セレンの明示的な待機機能を使用して、ページに要素が存在する時間を増やしました。また、セレンには暗黙の待機時間があります。
以下のクリックイベントにより、2つの異なる展開可能なショー内訳セクションが開きます。
最初は:
関連するHTML:
この行:
CSSセレクターを使用して、ページ上のスタイル設定によって要素をターゲットにします。属性
data-reveal-id
をターゲットにします 値detailed-breakdown
。ザ・ウィズウィズ 属性セレクターを示します。2番目のクリックターゲットは次のとおりです。
HTMLは次のとおりです。
親
[]
が表示されます ターゲット可能なIDがあります。コード:
参照(VBE> ツール> 参照):
セレンタイプライブラリ
サイドノート:
ループする場合は、要素を
Option Explicit Public Sub GetInfo() Dim d As WebDriver Set d = New ChromeDriver '< You can use IEDriver for Internet Explorer Const URL = "enterURL" With d .AddArgument "--headless" .Start "Chrome" .get URL .FindElementByCss("[data-reveal-id='detailed-breakdown']", Timeout:=7000).Click .FindElementById("brkdownInvstToggler").Click Debug.Print .FindElementById("transaction_chargeP0Y", Timeout:=7000).Text .Quit End With End Sub
に設定することを忘れないでください 次のループラウンドの前。例えば。
次に、次のURLを処理します。
Set transaction_charge = Nothing