Python Kullanarak Pinterest Verileri Nasıl Kazınır

Yorumlar: 0

Bu makale, Python ve sağlam bir otomasyon kütüphanesi olan Playwright kullanarak Pinterest'i kazıma yöntemini araştırıyor. Zengin görsel içeriğiyle bilinen Pinterest, veri analizi veya otomasyon girişimleri için verimli bir zemin oluşturmaktadır. Özellikle, arama sonuçlarından resim URL'lerini çıkarmak, araştırma veya ticari girişimler için çok önemli olabilir.

Playwright, birden fazla tarayıcıda etkileşimli oturumların otomasyonunu kolaylaştırır. Trafikten doğrudan veri çıkarılmasına olanak tanıyan ağ isteklerinin durdurulması gibi özelliklere sahiptir. Buna ek olarak, no-render modunda çalışabilme özelliği kazıma verimliliğini ve ölçeklenebilirliği artırır. İsteğe bağlı olmasına rağmen, anonimliği sağlamak ve olası engelleri aşmaya yardımcı olmak için proxy kullanımı önerilir, böylece Playwright Pinterest'ten görsel içerik toplamak için tercih edilen bir araç olarak sağlamlaştırılır.

Python için Playwright kurulumu

Başlamadan önce, Python ortamınıza Playwright'ı yüklemeniz gerekir. Pip kullanarak yükleyebilirsiniz:


pip install playwright

Yüklendikten sonra, tarayıcı ikili dosyalarını yüklemeniz gerekir:


playwright install

Şimdi, Pinterest resim URL'lerini kazımak için temel bir betiğe bakalım.

Pinterest'ten Veri Çıkarma Süreci

Aşağıda tam versiyonu sunulan senaryo aşağıdaki unsurları içermektedir:

Ana Fonksiyon

Ana işlev, https://in.pinterest.com/search/pins/?q=halloween%20decor gibi kullanıcı girdisine dayalı bir Pinterest arama sorgusu URL'si oluşturur ve ardından bunu capture_images_from_pinterest işlevine iletir.

Dinleme ve Filtreleme

Playwright sayfası page.on('response', ...) kullanarak ağ yanıtlarını dinler.

handle_response fonksiyonu ağ yanıtlarını filtreleyerek yalnızca kaynak türü görüntüleri ve .jpg ile biten URL'leri olanların yakalanmasını sağlar.

Verileri CSV'ye Kaydetme

Resim URL'lerini topladıktan sonra, bunları pinterest_images.csv adlı bir CSV dosyasına kaydederek kazınan verilerin dışa aktarılmasını ve analiz edilmesini kolaylaştırıyoruz.

Eksiksiz Kod

İşte Pinterest arama sonuçlarını kazıyan ve tüm resim URL'lerini çıkaran Python kodu:


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()

        # Resim URL'lerini sonu '.jpg' ile biten şekilde depolayın
        image_urls = []

        # Ağ yanıtlarını durdurma ve işleme işlevi
        page.on('response', lambda response: handle_response(response, image_urls))

        # URL'ye gidin
        await page.goto(url)

        # Ağ etkinliğinin yerleşmesini bekleyin (gerekirse ayarlayın)
        await page.wait_for_timeout(10000)

        # Tarayıcıyı kapatın
        await browser.close()

        return image_urls

# .jpg resim URL'lerini kontrol etmek için işleyici işlevi
def handle_response(response, image_urls):
    if response.request.resource_type == 'image':
        url = response.url
        if url.endswith('.jpg'):
            image_urls.append(url)

# Asenkron görevi çalıştırmak için ana fonksiyon
async def main(query):
    url = f"https://in.pinterest.com/search/pins/?q={query}"
    images = await capture_images_from_pinterest(url)
    
    # Görüntüleri CSV dosyasına kaydetme
    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")

# Asenkron ana işlevi çalıştırın
query = 'halloween decor'
asyncio.run(main(query))

Playwright'ta proxy'leri ayarlama

Pinterest'i kazımak, aynı IP adresinden çok fazla istek yaparsanız hız sınırlamasını ve hatta yasakları tetikleyebilir. Proxy'ler, isteklerinizi farklı IP adresleri üzerinden yönlendirerek bunu azaltmaya yardımcı olur ve birden fazla kullanıcı Pinterest'te geziniyormuş gibi görünmesini sağlar.

Neden proxy kullanmalı:

  • IP yasaklarından kaçının: Pinterest, olağandışı bir etkinlik tespit ederse IP adresinizi geçici olarak engelleyebilir. Proxy'ler IP adreslerini döndürerek bunu önlemeye yardımcı olur.
  • Ölçeklenebilirlik: Proxy kullanımı, kazıma çalışmalarının ölçeklendirilmesine olanak tanıyarak engelleme riskini en aza indirir.
  • İstek sınırlarını artırın: Proxy kullanmak, hız sınırlarını tetiklemeden daha fazla veri kazımanıza olanak tanır.

Playwright ile proxy'leri başlatma yöntemindeki proxy bağımsız değişkenini kullanarak kolayca kurabilirsiniz. Bu örnekte, "http://your-proxy-address:port" yerine proxy sunucunuzun adresini, bağlantı noktası numarasını ve proxy kimlik bilgilerini yazın.


async def capture_images_from_pinterest(url):
    async with async_playwright() as p:
        # Buraya proxy ekleyin
        browser = await p.chromium.launch(headless=True, proxy={"server": "http://your-proxy-address:port", "username": "username", "password": "password"})
        page = await browser.new_page()

Sonuç olarak, Playwright'ın bir proxy ile entegre edilmesi, kazıma otomasyonunun etkinliğini artırır. Bu kombinasyon sadece anti-bot mekanizmalarının yarattığı riskleri azaltmakla kalmaz, aynı zamanda veri toplama süreçlerinin genel verimliliğini de artırır.

Pinterest verilerini kazımanın zorlukları

Kullanıcıların Pinterest verilerini kazımak için Playwright'ı kullanırken karşılaşabilecekleri çeşitli zorluklar vardır:

  • Dinamik içerik yükleme: Pinterest, sonsuz kaydırma ve tembel yüklenen görüntüler dahil olmak üzere dinamik içerik yükleme teknikleri kullanır. Bu, eşzamansız veri yüklemeyi etkili bir şekilde işleyebilen kazıma araçlarını gerektirir.
  • Kazıma karşıtı önlemler: Pinterest gibi web siteleri, otomatik veri çıkarma çabalarını engellemek için hız sınırlama gibi çeşitli kazıma karşıtı mekanizmalar kullanır.

Playwright'ı proxy'lerle ve başsız modda kullanmak, bu zorlukları etkili bir şekilde azaltabilir, blok riskini azaltabilir ve veri çıkarma verimliliğini artırabilir.

Yorumlar:

0 yorumlar