Scrapy Part 1, Setup & Configuration

Apa itu scrapy ?

scrapy adalah salah tools canggih yang digunakan untuk melakukan web scrapper.

Web scraping, sering disebut web crawling atau web spidering.Dengan scraper web, Anda dapat menambang data tentang serangkaian produk, mendapatkan teks atau data kuantitatif, mendapatkan data dari situs tanpa API resmi, atau hanya memuaskan keingintahuan pribadi Anda sendiri.

secara sederhana scraping bisa dilakukan melalui dua tahap :

  1. mendownload halaman web
  2. mengambil halaman web tersebut dan mengekstrak informasi yang ada di dalamnya.

Instalasi scrapy

pastikan di komputermu sudah terinstal python 2.7

install virtual environment jika belum menginstall virtual environment kamu dapat membaca artikel sebelumnya

jika di komputermu python start defaultnya adalah python 3.x kamu dapat mengikuti langkah di bawah ini

mkvirtualenv version

kemudian install scrapy dengan pip

install scrapy

buat sebuah project dengan nama tutorial

create project scrapy

structur directory framework scrapy

sekarang buat sebuah spiders dengan nama quotes_spider.py letakan di di dalam direktory tutorial/spiders

import scrapy
 
 
class QuotesSpider(scrapy.Spider):
    name = "quotes"
 
    def start_requests(self):
        urls = [
            'http://quotes.toscrape.com/page/1/',
            'http://quotes.toscrape.com/page/2/',
        ]
        for url in urls:
            yield scrapy.Request(url=url, callback=self.parse)
 
    def parse(self, response):
        page = response.url.split("/")[-2]
        filename = 'quotes-%s.html' % page
        with open(filename, 'wb') as f:
            f.write(response.body)
        self.log('Saved file %s' % filename)

sekarang jalan kode diatas dan pindah ke main directory project tutorial

scrapy crawl quotes

untuk melihat hasil akhirnya perhatikan gambar di bawah ini

good lucks ūüôā

doc : https://doc.scrapy.org

download source : https://github.com/alfinfanther/scrapy_tutorial

 

Mt-Migrate V0.1b – Mysql to Postgresql

 

mt-migrate

Just Info :

Saat ini mitratek team sedang mepersiapkan release Mt-Migrate V0.1b  sebuah tools untuk migrasi database dari mysql ke postgresql dan dari postgresql ke mysql. Mt-Migrate V0.1b di kembangkan untuk kalangan enginer dan non enginer, dengan tujuan untuk mempersingkat waktu migrasi database.

Mt-Migrate V0.1b rencananya akan di publish di bulan february 2018

 

Pytz, Create Local Unix Time

change time zone using pytz

python

pytz brings the Olson tz database into Python. This library allows accurate and cross platform timezone calculations using Python 2.4 or higher. It also solves the issue of ambiguous times at the end of daylight saving time, which you can read more about in the Python Library Reference.

How to change human time to unix time ?

– create a function, this function will be used to change local unix time

import pytz
import time
from datetime import datetime
 
def convert_to_unix(date_time):
    localtz = pytz.timezone('Asia/Jakarta')
    date_aware_la = localtz.localize(date_time).strftime("%Y-%m-%d %H:%M:%S")
    source_time = time.strptime(date_aware_la, "%Y-%m-%d %H:%M:%S")
    created_date_unix = time.mktime(source_time)
    return created_date_unix
 
 
date_now = convert_to_unix(datetime.now())
print(date_now)

how to install pytz ?

pip install pytz or easy_install pytz

doc : https://pypi.python.org/pypi/pytz

Solve Problem dh key too small (_ssl.c:777) #Python

 

Bagi kamu yang melakukan migrasi mesin server linux saat menemukan problem pada library requests seperti ini :

[ssl: ssl_negative_length] dh key too small (_ssl.c:777)

pada sistem operasi linux (ubuntu) error di atas karena urllib3 belum terinstall di invironment, solusinya install terlebih dahulu

pip3 install urllib3

lakukan testcase seperti dibawah ini :

import requests
requests.packages.urllib3.disable_warnings()
requests.packages.urllib3.util.ssl_.DEFAULT_CIPHERS += 'HIGH:!DH:!aNULL'
url='https://garuda-indonesia.com/'
try:
    requests.packages.urllib3.contrib.pyopenssl.DEFAULT_SSL_CIPHER_LIST += 'HIGH:!DH:!aNULL'
except AttributeError:
    # no pyopenssl support used / needed / available
    pass
 
page = requests.get(url, verify=False)
print(page)
#source by stack oferfvlow

 

semoga membantu

 

Python Virtualenv and Cron Jobs

virtualenv-python

Bagaimana untuk menjalankan cron jobs python di virtualenv ?

–¬† login sebagai super user¬†

sudo -i

–¬† buka crontab

crontab -e

–¬† setting cron job misal setiap 17 menit

*/17 * * * *    cd /var/www/MyProject && venv/bin/python3.6 scraper.py

–¬† simpan crontab

ctrl+o lalu tekan enter kemudian ctrl+x

Рlihat status crontab 

crontab -l

jika ada problem tentang python bisa hubungi kami mitratek team