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.
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.
Aşağıda tam versiyonu sunulan senaryo aşağıdaki unsurları içermektedir:
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.
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.
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.
İş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))
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ı:
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.
Kullanıcıların Pinterest verilerini kazımak için Playwright'ı kullanırken karşılaşabilecekleri çeşitli zorluklar vardı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