MSのInternet Explorerのサポートは、2022/06/15で終了。スクレイピングできないサイトのオートパイロットはSHDocVw.dll内のAPIで使用していますが、どうやらDLLはなくならないっぽい。けれど確認は各自してくださいとの事らしい。
Internet explorer end of life: impacts on programs using SHDocVw.DLL – Microsoft Q&A
なので、C#で使えそうなAPIを模索中。WebAPIを公開していてもIPでブロックされて使えないサイト(某Yフ―ショッピング)もあるので結局、オートパイロットでUI上からダウンロードリンクのクリックを再現している。ダウンロードダイアログのダウンロードボタンは、別プログラムでクリックしている。
SHDocVw.InternetExplorer objIE = new SHDocVw.InternetExplorer();
objIE.Navigate("https://xxxx.com/URLPath");
objIE.Visible = true;
objIE.Silent = true;
objIE.FileDownload +=
new DWebBrowserEvents2_FileDownloadEventHandler(IE2_FileDownload);
foreach (HTMLButtonElement b in objIE.Document.getElementsByTagName("button"))
{
if (b.name == "btnSubmit")
{
//Console.WriteLine(b.type);
//Console.WriteLine(b.name);
b.click();
break;
}
}
代用できるAPIがみつかればIEはすぐに捨てていくことにする。できればブラウザのUIを表示しないでスクレイピングのみでやりたいけれど、WebAPIを公開しているのにもかかわらず登録IPのみ処理可能っていうのは、やめてほしい。登録してもPHPを走らせていているサーバはレンタルサーバーのせいか結局はじかれる。よくわからないがサポートと話すくらいならできる方法でやるしかない。
愚痴ってもしょうがない。