Coding Memos

try {coding} catch {questions}

Python + Selenium + Headless Chrome

f:id:codingmemos:20170608224002p:plain snoozepost.com 画像は上記から。

chromeがver59になってから、developerたちに嬉しい機能がいくつか付加された。

front-end 側では、使っていないjsやcssについてわかるようになったため、コードの軽量化がはかどることだろう。

さて、個人的には表題に示した通り、Headless Chromeをつかうことになった。

Headless ブラウザといえば、最も有名なのはPhantomJSだろう。 しかし、PhantomJSはメンテナーを募集している状況にあり、このままいくと、headless chromeが市民権を得ることだろう。

ちなみに、WindowsでのサポートはまだなされていないMac, LinuxでHeadless Chromeを利用することができる。(2017/6/8時点)

ヘッドレス Chrome ことはじめ  |  Web  |  Google Developers

また、--headless--disable-gpu というオプションをつけることが条件だ。 (後者のオプションはそのうちいらなくなるだろうと言われている。Google Developersの記事を読んでほしい。)

Headless Chromeに期待していることがClick eventによるPDFなどのファイルダウンロード(PhantomJSでもやはりファイルダウンロードは課題だった)。

しかし、これはHeadless Chromeにおいても同様だった。 (私が確認する限りでは。)

headless にすることで、click eventもしくはファイルダウンロードがうまくいなないのはどのブラウザでも一緒なんだろうか。

Web scrapingしてDOMを扱うのであれば問題はないだろう。

現状でchromedriverは正式にはver58までのサポートとなっているため、これがアップデートされれば かわるのだろうか・・・。

File download · Issue #10052 · ariya/phantomjs · GitHub

2011年に報告されたissueは6年経った今でもOpenステータスだ。

やり方はあるようだが、jsでclick eventを実装することになりそうだ。