Artikel ini membahas metode scraping Pinterest menggunakan Python dan Playwright, sebuah library otomatisasi yang kuat. Pinterest, yang dikenal dengan konten visualnya yang kaya, berfungsi sebagai lahan subur untuk analisis data atau inisiatif otomatisasi. Secara khusus, mengekstrak URL gambar dari hasil pencarian dapat menjadi sangat penting untuk penelitian atau usaha komersial.
Playwright memfasilitasi otomatisasi sesi interaktif di berbagai peramban. Ini membanggakan fitur-fitur seperti intersepsi permintaan jaringan, yang memungkinkan ekstraksi data langsung dari lalu lintas. Selain itu, kemampuannya untuk beroperasi dalam mode tanpa rendering meningkatkan efisiensi dan skalabilitas penggalian. Penggunaan proxy, meskipun opsional, direkomendasikan untuk memastikan anonimitas dan membantu menghindari potensi pemblokiran, sehingga mengukuhkan Playwright sebagai alat yang lebih disukai untuk mengambil konten visual dari Pinterest.
Sebelum kita mulai, Anda harus menginstal Playwright di lingkungan Python Anda. Anda dapat menginstalnya menggunakan pip:
pip install playwright
Setelah terinstal, Anda harus menginstal peramban biner:
playwright install
Sekarang, mari kita lihat skrip dasar untuk mengikis URL gambar Pinterest.
Naskah, yang versi lengkapnya disajikan di bawah ini, mencakup elemen-elemen berikut ini:
Fungsi utama membuat URL kueri penelusuran Pinterest berdasarkan input pengguna, misalnya, https://in.pinterest.com/search/pins/?q=halloween%20decor, dan kemudian meneruskannya ke fungsi capture_images_from_pinterest.
Halaman Playwright mendengarkan respons jaringan menggunakan page.on('response', ...).
Fungsi handle_response memfilter respons jaringan, memastikan bahwa hanya respons dengan jenis sumber daya gambar dan URL berakhiran .jpg yang ditangkap.
Setelah mengumpulkan URL gambar, kami menyimpannya ke dalam file CSV bernama pinterest_images.csv, sehingga data yang telah dikikis mudah untuk diekspor dan dianalisis.
Berikut adalah kode Python yang mengikis hasil pencarian Pinterest dan mengekstrak semua URL gambar:
import asyncio
from playwright.async_api import async_playwright
async def capture_images_from_pinterest(url):
async with async_playwright() as p:
browser = await p.chromium.launch(headless=True)
page = await browser.new_page()
# Menyimpan URL gambar dengan akhiran '.jpg'
image_urls = []
# Berfungsi untuk mencegat dan memproses respons jaringan
page.on('response', lambda response: handle_response(response, image_urls))
# Arahkan ke URL
await page.goto(url)
# Tunggu hingga aktivitas jaringan selesai (sesuaikan jika perlu)
await page.wait_for_timeout(10000)
# Menutup browser
await browser.close()
return image_urls
# Fungsi penangan untuk memeriksa URL gambar .jpg
def handle_response(response, image_urls):
if response.request.resource_type == 'image':
url = response.url
if url.endswith('.jpg'):
image_urls.append(url)
# Fungsi utama untuk menjalankan tugas asinkronisasi
async def main(query):
url = f"https://in.pinterest.com/search/pins/?q={query}"
images = await capture_images_from_pinterest(url)
# Menyimpan gambar ke file CSV
with open('pinterest_images.csv', 'w') as file:
for img_url in images:
file.write(f"{img_url}\n")
print(f"Saved {len(images)} image URLs to pinterest_images.csv")
# Jalankan fungsi utama asinkronisasi
query = 'halloween decor'
asyncio.run(main(query))
Mengikis Pinterest dapat memicu pembatasan kecepatan atau bahkan pemblokiran jika Anda membuat terlalu banyak permintaan dari alamat IP yang sama. Proksi membantu mengurangi hal ini dengan merutekan permintaan Anda melalui alamat IP yang berbeda, sehingga terlihat seolah-olah ada banyak pengguna yang menjelajahi Pinterest.
Mengapa menggunakan proxy:
Anda dapat dengan mudah mengatur proksi dengan Playwright menggunakan argumen proksi dalam metode peluncuran. Dalam contoh ini, ganti "http://your-proxy-address:port" dengan alamat server proxy, nomor port, dan kredensial proxy Anda.
async def capture_images_from_pinterest(url):
async with async_playwright() as p:
# Tambahkan proxy di sini
browser = await p.chromium.launch(headless=True, proxy={"server": "http://your-proxy-address:port", "username": "username", "password": "password"})
page = await browser.new_page()
Oleh karena itu, mengintegrasikan Playwright dengan proxy akan meningkatkan efektivitas otomatisasi scraping. Kombinasi ini tidak hanya mengurangi risiko yang ditimbulkan oleh mekanisme anti-bot, tetapi juga meningkatkan efisiensi proses pengumpulan data secara keseluruhan.
Ada beberapa tantangan yang mungkin dihadapi pengguna saat menggunakan Playwright untuk mengikis data Pinterest:
Memanfaatkan Playwright dengan proxy dan dalam mode headless dapat secara efektif mengurangi tantangan ini, mengurangi risiko pemblokiran dan meningkatkan efisiensi ekstraksi data.
Komentar: 0