ヤマムギ

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認定資格試験テキスト AWS認定AIプラクティショナー」という本を書きました。

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

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

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

 - AWS , ,

  関連記事

API GatewayからLambdaを介さずにSNSトピックへ送信

やりたいこと APIリクエストをまずLambdaで受けて、SNSトピックへ送信す …

Backlogの課題チケット更新内容をMicrosoft Teamsに通知する(AWS Lambda Python)

BacklogにSlack連携が追加されました。 ですが、私の所属している会社で …

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

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

Amazon ECS Workshop for AWS Summit Online

INTRODUCTION TO AMAZON ECSに手順や必要なリンクがありま …

LINE BOT AWARDS 2017に応募しました

LINEの友達追加QRです。 動作のご確認にどうぞ LINE BOT AWARD …

Mountpoint for Amazon S3を試しました

このブログでは、画像などの配信にS3を使用しています。 WordPressのプラ …

Feedlyのフィードを自動でSlackへ投稿する(AWS Lambda , Amazon DynamoDB)

やりたいこと Feedlyで共有したいフィードに特定のタグを付けます。 特定のタ …

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

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

Cloud9のデフォルト設定での権限確認(AWS managed temporary credentials)

Cloud9の環境を作成した際のデフォルトアクセス権限は、環境を作成したIAMユ …

「re:CAP ~サーバーワークス re:Invent 2018 報告会~」でre:Invent2018について思われたことを聞かせていただいた

サーバーワークスさんのre:Invent re:CAPにおじゃましました。 re …