Eksekusi Script Pyton Di Laravel Untuk Scrapping
Dalam tutorial ini, kali ini saya akan menggunakan dua bahasa pemrograman yang berbeda yaitu PHP dan Phyton, Sebenarnya dari Kedua bahasa pemrograman tersebut dari segi rencana kerja yang berbeda. PHP digunakan untuk membuat aplikasi berbasis web, sementara Python cenderung digunakan di bidang jaringan atau AI, atau aplikasi memerlukan perhitungan kompleks yang membutuhkan waktu yang cukup lama dalam memprosesnya. Meskipun Python juga dapat digunakan untuk mengembangkan web Django atau Falsk.
Penggunakan kedua bahasa pemrograman tersebut untuk tujuan yang berbeda, namun keduanya bisa saling melengkapi. Saya menggunakan PHP dalam kerangka Laravel untuk mengembangkan aplikasi situs web, tetapi saya menggunakan Python untuk mengambil/mengikis data massal atau di sebut juga dengan scrapping sesuai kebutuhan di aplikasi situs web sebelumnya. Terkadang saya menulis fungsi yang dihapus dalam PHP, tetapi sering kali saya mengalami masalah dengan waktu eksekusi dan batas waktu habis. Untungnya, Laravel memiliki fitur yang disebut penjadwal yang memungkinkan Anda menjadwalkan proses yang berjalan lama dan menjalankannya dalam proses latar belakang.
Dalam hal ini, proyek dasar perlu menggabungkan dua bahasa di laravel, tetapi Python diperlukan untuk melakukan fungsi kompleks yang dapat ditangani Google dengan baik dengan penelusuran. Pada akhirnya, saya menemukan solusi untuk ide saya. Ada lima cara untuk menggabungkan keduanya.
Membuat REST API di PythonMetode ini dilakukan dengan terlebih dahulu membuat fungsi di Python, menerima parameter input, memproses input, dan menghasilkan output lebih lanjut untuk laravel. lainnya. Jalankan laravel dan python secara terpisah. Metode ini dilakukan dengan membagi tugas antara pengambilan data yang dilakukan di Laravel dan pemrosesan data yang dilakukan dengan Python. Misalnya, jika Anda menggunakan Laravel untuk mengambil data dan menyimpannya dalam format teks atau database, Python akan membaca file atau data dalam database satu per satu untuk diproses nanti dan menyimpan output lagi dalam format file atau database. Cara ini tidak memungkinkan Anda untuk menjalankan kedua dua bahasa pemrograman tersebut secara bersamaan atau bersamaan, karena setiap output harus di-generate terlebih dahulu. Jalankan skrip Python menggunakan command prompt. Ini adalah yang paling banyak digunakan dan merupakan cara terbaik untuk memiliki beberapa kekuatan dan kelemahan.Menjalankan skrip Python dengan eksekusi baris perintah dari Laravel
Seperti yang telah dijelaskan pada judul, ketiga metode tersebut dijelaskan sebagai berikut:
Metode pertama
Metode pertama dilakukan dengan membiarkan output pemrosesan dari Python apa adanya. Artinya, ia keluar dari perintah print dan dibaca oleh laravel sebagai string keluaran.
phyton :
# analyse_string.py
#!/usr/bin/pythonimport sys
from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzeranalyser = SentimentIntensityAnalyzer()
print(str(analyser.polarity_scores(sys.argv[1])))
Laravel:
use Symfony\Component\Process\Process;
use Symfony\Component\Process\Exception\ProcessFailedException;$text = 'The text you are desperate to analyze :)";
$process = new Process("python3 /Path/To/analyse_string.py \"{$text}\"");
$process->run();// executes after the command finishes
if (!$process->isSuccessful()) {
throw new ProcessFailedException($process);
}echo $process->getOutput();
// Result (string): {'neg': 0.204, 'neu': 0.531, 'pos': 0.265, 'compound': 0.1779}
Metode kedua
Metode kedua dilakukan dengan mengubah output yang diproses menjadi string JSON.
phyton :
# analyse.json.py
#!/usr/bin/pythonimport sys
import json
from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzerx=sys.argv[1]
data=json.loads(x)analyser = SentimentIntensityAnalyzer()for item in data:
item['sentiment'] = analyser.polarity_scores(item['text'])
item.pop('text', None)print(json.dumps(data))
Laravel:
// $json = an encoded JSON string
$process = new Process("python3 /Path/To/analyse_json.py {$json}");
$process->run();// executes after the command finishes
if (!$process->isSuccessful()) {
throw new ProcessFailedException($process);
}dump(json_decode($process->getOutput(), true));
Metode ketiga
Metode ketiga dilakukan dengan membaca buffer hasil pemrosesan dari Python. Metode ini menggunakan fungsi php ob_start()
dan ob_get_clean()
. Untuk menggunakan fungsi on_start()
yang merupakan fungsi untuk membaca buffer.
Laravel:
ob_start();
black_box_function_printing_to_command_line();
$output = ob_get_clean();
Ada tiga metode untuk menjalankan skrip Python di Laravel. Semoga dengan trik ini, Anda dapat terus mengembangkan aplikasi Anda dalam dua bahasa pemrograman yang masing-masing memiliki kelebihan dan kekurangannya sendiri.