ヤマムギ

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つだけでした。

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

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


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

「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。

「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。

「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。

「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。

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

 - AWS , ,

ad

ad

  関連記事

Amazon EMR 「Hadoop を使用してビッグデータを分析」チュートリアルをやってみました

AWS認定データアナリティクス受験準備の一環で、Amazon EMRのチュートリ …

Amazon LinuxにAlfresco Community Editionをインストールする

ダウンロード準備 Alfresco公式サイトで、「エンタープライズコンテンツ管理 …

特定AWSアカウント特定リージョンのCloudFormationスタックを削除するLambda(Python)

やりたいこと 特定アカウント内特定リージョン内のCloudFormationスタ …

Selenium, Headless ChromeとAWS Lambdaで夜な夜なスクレイピング

このようなアーキテクチャで、Alexaスキルの開発を進めていまして、元となる情報 …

Amazon Pinpoint Workshopの1(Eメール)

Amazon Pinpoint Workshop ここ数年、AWS re:Inv …

PyCharmにAWS CloudFormationプラグインをインストールして入力補完してみる

JetBrainsのPython統合開発環境(IDE)のPyCharmを1年ちょ …

X-Ray SDK for Python でライブラリへのパッチ適用

boto3でのAWS呼び出しとrequestsでの外部API呼び出しにパッチ適用 …

Lambdaでちょっとしたコードを試すときに便利なエディタのフルスクリーン機能

Lambda歴6年で、はじめて使いました。 この存在に気がついてなかったです。 …

Amazon SNSサブスクリプションフィルターで優先度別のSQSキューにサブスクライブする

EC2のコンシューマーアプリケーションは優先度の高いキューのメッセージを先に処理 …

SendGridのイベントをAPI Gateway -> Lambda(Python) -> DynamoDBに格納する

SendGridのメールイベントログはコンソールで確認出来るのは直近7日分で一括 …