Membuat Pagination di Flask + MongoDB

Pertama, kita butuh flask extension yang bernama flask-paginate

https://pythonhosted.org/Flask-paginate/

Kemudian tambahkan baris berikut di route yang mau di-paginasi, misal search result:

from flask_paginate import Pagination, get_page_parameter

@app.route("/search/<keyword>")
def search(keyword):
	page = request.args.get(get_page_parameter(), type=int, default=1)
	per_page = 3
	offset = (page - 1) * per_page
	data = db.product.find({'$text': {'$search': keyword}}, {'score':
		{'$meta':
		'textScore'}}).sort([('score', {'$meta': 'textScore'})]).skip(offset).limit(per_page)

	pagination = Pagination(page=page,
		per_page=per_page,
		total=data.count(),
		css_framework='bootstrap3',
		search=False,
		record_name='products')

	keyword_title = keyword.replace('-', ' ').title()
	return render_template("search.html",
		keyword_title=keyword_title,
		data=data,
		pagination=pagination
	)

Selanjutnya di template search.html:

{% for i in data %}
<p>{{ i['title'] }}</p>
{% endfor %}

{{ pagination.info }}
{{ pagination.links }}

Langkah-langkahnya adalah:

  1. Menentukan per_page (limit di mongo)
  2. Menentukan offset (skip kalau di mongo)
  3. Membuat query ke mongo
  4. Membuat object paginasi
  5. Menampilkan data paginasi

Scraping Tokopedia Menggunakan Python Feedparser

Kali ini saya akan mencontohkan bagaimana kita bisa membuat scraper Tokopedia hanya dengan memanfaatkan Feed URL. Tokopedia memiliki Feed URL untuk setiap kategori yang mereka punya, sebagai contoh kategori Fashion Anak, URL nya adalah:

https://www.tokopedia.com/feed?sc=78

Dengan memanfaatkan library feedparser di Python, kita bisa dengan mudah melakukan scraping terhadap produk-produk terbaru dari Tokopedia. Berikut ini contoh kode-nya:

import feedparser
url = "https://www.tokopedia.com/feed?sc=78"
data = feedparser.parse(url)
data = data['entries']

# selanjutnya tinggal looping, misal kita ingin mendapatkan title:

for i in data:
    print(i['title'])

Jika ingin dikembangkan lagi, kita dapat menggabungkan kode di atas dengan web framework misal Flask atau Django, mongodb untuk menyimpan data, lakukan markup terhadap harga, dan BOOM! Jadilah sebuah aplikasi web dropship instan!!!

Preview Web Dropship Tokopedia Instan

Screen Shot 2017-08-09 at 12.25.04 PM

URL – Sebaiknya Relative atau Absolute?

What? Yah itulah kenyataan di dunia SEO, bagi engineer, penggunaan absolute URL tentu bukan best practices, kenapa? Karena tidak dinamis, jika kita mengganti nama domain, maka perlu penyesuaian di sana sini untuk bisa menyesuaikan dengan domain baru. Ini tentu berarti tambahan pekerjaan…

Tapi dari kacamata SEO, beda lagi… Best practice untuk SEO adalah menggunakan absolute URL, ini terkait dengan utamanya crawler budget. Silakan baca tautan berikut untuk penjelasan lebih lanjut…

Install supervisor – the right way

The right way ini maksudnya mirip-mirip best practice lah.. Yakni dengan tidak menggunakan super user (sudo), caranya bagaimana? Cukup tambahkan parameter –user ke perintah pip Anda…

$ pip install supervisor –user

Instalasi terletak di direktori home Anda

~/.local/bin/

Bagaimana jika meng-install sebagai super user? Tidak ada masalah sih, bisa aja, namun Anda harus tahu bahwa instalasi pip menggunakan sudo tidak disarankan dari sisi keamanan sebuah sistem.

Mudah Mengelola Long-running Processes dengan supervisor

Anda memiliki banyak long-running process dalam satu mesin? Misal running beberapa aplikasi django? Gunakan supervisorctl kalau Anda tidak ingin repot. Setelah terpasang dan konfigurasi berjalan dengan baik, mengelola banyak aplikasi menjadi mudah, cukup dengan reread, stop, start…

reread

Perintah ini untuk membaca ulang isi dari supervisord.conf

update

Perintah ini untuk menambahkan proses baru kedalam supervisord

start/stop

Perintah ini untuk memulai/menghentikan sebuah proses

status

Perintah ini untuk melihat status dari masing-masing proses yang kita miliki.

Jangan Pernah Melakukan pip install Menggunakan Root / Super User

Terus caranya bagaimana? Cukup tambahkan parameter –user, misal saya ingin meng-install supervisor, tanpa sudo, besar kemungkinan hasilnya error permission denied, untuk itu, lakukan perintah berikut:

pip install supervisor --user

Jika Anda pengguna ubuntu, maka lokasi instalasi ada di

~/.local/bin

Untuk lebih memudahkan, Anda dapat membuat alias sederhana di .bashrc:

alias supervisord="/home/kholidfu/.local/bin/./supervisord"
alias supervisorctl="/home/kholidfu/.local/bin/./supervisorctl"

Selamat mencoba