Eray Bartan Blog

Eray Bartan Blog

AWS Lambda Functions ile Python Web Scrapping

AWS Lambda Functions ile Python Web Scrapping

Subscribe to my newsletter and never miss my upcoming articles

Python ile e-ticaret sitesinden başlık ve fiyatları çektiğim ve bunları gogle sheets üzerine yazan bir script hazırladım. Script python pandas, gspread ve requests-html kütüphanelerini kullanıyor. Bu kütüphanelerin çalıştığı bir lambda fonksiyonu yaratmak için serverless.com işime çok yaradı.

Ubuntu kurulu linux bilgisayar üzerinden denedim. serverless.com üzerinden kayt olup aws hesabınzı bağlamanız gerekiyor. İhtiyacınız olan aws key bilgilerinin nasıl alınacağı hakkında örnek videolar mevcut.

Providers.png

Serverles kurulumu ile başladım.

npm install -g serverless

Python 3 kullanan service template kodu aşağıdaki şekilde

$ serverless create \
  --template aws-python3 \
  --name ebartan-test \
  --path ebartan-test

cd ebartan-test çalışma klasörüne giriş yaptıktan sonra ile yaptığım işlem virtual enviroment olarak çalışmak.

virtualenv venv --python=python3
source venv/bin/activate

serverless.com handler.py dosyasını hello fonksiyonu ile otomatik yaratıyor. serverless.yml dosyası aşağıdaki şekilde olması gerekiyor.

service: ebartan-test

provider:
  name: aws
  runtime: python3.6

functions:
  ebartan-test: (AWS Lambda fonksiyon adı)
    handler: handler.main

benim yapacağım ilk şe pip ile ihtiyacım olan paketleri yüklemek. handler.py dosyamda kullandığım paketler içi pip install komutu ile yüklemeleri yaptım.

from requests_html import HTMLSession
import gspread
import pandas as pd

paketinizin gereksinimleri requirements.txt dosyasında bulunyor. pip freeze ile uyumlu hale gitrmeniz gerekiyor.

(venv) $ pip freeze > requirements.txt

Depolamaya geçmeden önce ihyiacımız olan serverless-python-requirements plugin yüklemek için npm init komutu ile package.json dosyası yaratıyoruz.

(venv) $ npm init
(venv) $ npm install --save serverless-python-requirements

serverless.yml dosyamızda birkaç konfigürasyona daha ihtiyacımız var. aşağıdaki satırları serverless.yml dosyamızın üst bölümüne ekliyoruz.

package:
  patterns:
    - '!node_modules/**'
    - '!venv/**'
    - '!.serverless/**'

plugins:
  - serverless-python-requirements

custom:
  pythonRequirements:
    dockerizePip: non-linux

package patterns ile fonksiyon deploy için zip haline getirildiğinde boyut olarak gereksiz doayalardan arınmış oluyor.

serverless.yml dosyamızda fonksiyonun maksimum çalışma zamanını timeout: 900 saniye yani 15 dakika olarak ayarladım.

functions:
  ebartan-test:
    timeout: 900
    handler: handler.main

Lokal bilgisayarda sorunsuz çalıştığından emin olun. Daha sonra serverles deploy komutu ile zip dosyanızı aws lambda bölümüne upload yapabilirsiniz.

(venv) $ serverless deploy

Haftanın her günü geceyarısından sonra çalışmasını istiyordum. 350 satırdan oluşan bir sorgum vardı. 0-175 ve 151-350 şeklinde ikiye ayırdım.

#aws#aws-lambda#data-science#serverless
 
Share this

Impressum

Technical Specialties

  • Neo4j Graph Database Beginner Developer
  • Google Data Studio Dashboard Design
  • Micosoft Power BI Dashboard Design

Industry Experience

  • Municiapilty (IT Department, Data Analyst)
  • Real Estate (Web Design, Social Media Publisher, Mailchimp Automation)
  • Hotels & Restaurants (Web Design, Google Ads , Facebook Ads)
  • Sports (Web Design, Mailchimp Campaign)
Proudly part of