ヤマムギ

growing hard days.

*

AWS Lambda(Python3)でSelenium + Chrome Headless + でwebスクレイピングする

      2018/09/04


インターネット上に公開されている情報をDynamoDBにつっこみたいだけなので、VPC内のLambdaからVPN経由で会社のシステムのAPIやデータベースとやりとりするよりも、VPC外のLambdaからwebスクレイピングをしてしまったほうがてっとり早いかなと。

以前まではPhantomJSを使ってましたがどうやら開発が止まるらしいので、今回からChrome Headlessを使ってみようということで少しエラーが出たりしたので備忘録として書いておきます。

とりあえずやってみる

ダウンロードして展開したheadless-chromiumとchromedriverをbinディレクトリを作って格納。

でSeleniumをダウンロードして、zipで固めてLambdaを作成して早速実行。

※ アクセスしたページのタイトルをリターンするだけのサンプルコードです。
※ urlは実際には何らかのURが入ります。

最新バージョンのドライバだと下記エラーが発生。

なので、こちら
AWS Lambda上のheadless chromeをPythonで動かす
を参考にさせていただき、以下からダウンロードして使用。

https://github.com/adieuadieu/serverless-chrome/releases/download/v1.0.0-37/stable-headless-chromium-amazonlinux-2017-03.zip

https://chromedriver.storage.googleapis.com/2.37/chromedriver_linux64.zip

結果はエラーとなりましたので発生エラーと、解消のために追加したオプションを次に記載します。

エラー対応

selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: exited abnormally

selenium.common.exceptions.WebDriverException: Message: unknown error: unable to discover open pages

エラーはこの2つだけでした。

他にもパラメータオプションは色々あるようですが、必要最低限のものだけ設定しておきます。

結果、次のようなコードになりました。


最後までお読みいただきましてありがとうございました!

【PR】 「AWS認定試験対策 AWS クラウドプラクティショナー」という本を書きました。

【PR】 「AWSではじめるLinux入門ガイド」という本を書きました。

i

【PR】 「ポケットスタディ AWS認定 デベロッパーアソシエイト」という本を書きました。

 - AWS , ,

ad

ad

  関連記事

Amazon API GatewayのIAM認証の動作を確認しました

API GatewayのIAM認証は、IAMユーザーが実行できるように認証する、 …

ヤマムギ vol.10 (AWS)EC2モニタリングハンズオン 手順

このブログは2020/5/6に開催しました、「ヤマムギ vol.10 (AWS) …

AWSアカウント内のすべてのS3バケットを削除するLambda(Python)

やりたいこと 特定アカウント内のS3バケットを全部削除したいです。 バケット内の …

EC2 Amazon Linux 2 にAmazon LinuxからWordPressを移行

このブログを新しいインスタンスに移行することにしました。 2015年5月にAma …

ブラウザからJavaScript SDKを使ってAmazon S3 への写真のアップロードチュートリアルをやってみました

ブラウザから Amazon S3 への写真のアップロードをやってみました。 HT …

AWS CDK とにかくサンプルでやってみる

Cloud9でAWS CDK環境で作った環境でサンプルプロジェクトからのデプロイ …

ヤマムギ vol.9 (AWS)EC2からAWS CLIコマンドを実行してみようハンズオン 手順

このブログは2020/5/5に開催しました、「ヤマムギ vol.9 (AWS)E …

Amazon Cognito User Poolsのデモをしてみました

AWS Summit 2016 Tokyoのアップデートおっかけ会をJAWS-U …

php-fpm で Out of memoryが発生した際にメール通知する(AWS CloudWatch , Amazon SNS)

AWS CloudWatch LogsエージェントでAmazon EC2上のNg …

AWS Lambda(Python3.7)でPandocを実行する

昨日まで(AWS Batch) 昨日までは、Pandocを実行して、S3バケット …