यह लेख Python और Playwright, एक मजबूत स्वचालन लाइब्रेरी का उपयोग करके Pinterest को स्क्रैप करने की विधि का अन्वेषण करता है। Pinterest, जो अपने समृद्ध दृश्य सामग्री के लिए जाना जाता है, डेटा विश्लेषण या स्वचालन पहलों के लिए एक उपजाऊ भूमि के रूप में कार्य करता है। विशेष रूप से, खोज परिणामों से छवि URL निकालना शोध या व्यावसायिक उपक्रमों के लिए महत्वपूर्ण हो सकता है।
Playwright कई ब्राउज़रों में इंटरैक्टिव सत्रों के स्वचालन को सक्षम बनाता है। इसमें नेटवर्क अनुरोधों को रोकने जैसी विशेषताएँ शामिल हैं, जो ट्रैफ़िक से सीधे डेटा निष्कर्षण की अनुमति देती हैं। इसके अतिरिक्त, इसका नो-रेंडर मोड में संचालित होने की क्षमता स्क्रैपिंग दक्षता और विस्तार क्षमता को बढ़ाती है। प्रॉक्सी का उपयोग, हालांकि वैकल्पिक है, गुमनामी सुनिश्चित करने और संभावित प्रतिबंधों को दरकिनार करने में सहायता के लिए अनुशंसित है, जिससे Pinterest से दृश्य सामग्री को एकत्रित करने के लिए Playwright एक पसंदीदा उपकरण बन जाता है।
शुरू करने से पहले, आपको अपने Python वातावरण में Playwrightस्थापित करने की आवश्यकता है। आप इसे PIP का उपयोग करके स्थापित कर सकते हैं:
pip install playwright
एक बार स्थापित होने के बाद, आपको ब्राउज़र बायनेरिज़ स्थापित करने की आवश्यकता होगी:
playwright install
अब, आइए Pinterest छवि URL को परिमार्जन करने के लिए एक मूल स्क्रिप्ट देखें।
स्क्रिप्ट, जिसका पूरा संस्करण नीचे प्रस्तुत किया गया है, में निम्नलिखित तत्व शामिल हैं:
मुख्य फ़ंक्शन उपयोगकर्ता इनपुट, जैसे, https://in.pinterest.com/search/pins/?q=halloween%20decor के आधार पर एक Pinterest खोज क्वेरी URL बनाता है, और फिर इसे capture_images_from_pinterest फ़ंक्शन में पास करता है।
Playwright पृष्ठ नेटवर्क प्रतिक्रियाओं के लिए सुनता है page.on('response', ...).
handle_response फ़ंक्शन नेटवर्क प्रतिक्रियाओं को फ़िल्टर करता है, यह सुनिश्चित करते हुए कि केवल वही संसाधन जिनका प्रकार छवि (image) है और जिनके URL .jpg पर समाप्त होते हैं, उन्हें कैप्चर किया जाए।
छवि URL इकट्ठा करने के बाद, हम उन्हें pinterest_images.csv नाम के एक CSV फ़ाइल में सहेजते हैं, जिससे स्क्रैप डेटा को निर्यात और विश्लेषण में आसान हो जाता है।
यहाँ Python कोड है जो Pinterest खोज परिणामों को स्क्रैप करता है और सभी छवि URL को निकालता है:
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()
# स्टोर छवि '.jpg' समाप्त होने के साथ urls
image_urls = []
# नेटवर्क प्रतिक्रियाओं को रोकने और संसाधित करने के लिए कार्य
page.on('response', lambda response: handle_response(response, image_urls))
# URL पर नेविगेट करें
await page.goto(url)
# नेटवर्क गतिविधि को व्यवस्थित करने के लिए प्रतीक्षा करें (यदि आवश्यक हो तो समायोजित करें)
await page.wait_for_timeout(10000)
# ब्राउज़र बंद करें
await browser.close()
return image_urls
# हैंडलर फ़ंक्शन .jpg छवि url के लिए जांच करने के लिए
def handle_response(response, image_urls):
if response.request.resource_type == 'image':
url = response.url
if url.endswith('.jpg'):
image_urls.append(url)
# Async कार्य चलाने के लिए मुख्य कार्य
async def main(query):
url = f"https://in.pinterest.com/search/pins/?q={query}"
images = await capture_images_from_pinterest(url)
# छवियों को एक 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")
# Async मुख्य फ़ंक्शन चलाएं
query = 'halloween decor'
asyncio.run(main(query))
Pinterest को स्क्रैप करना रेट लिमिटिंग को ट्रिगर कर सकता है या यदि आप एक ही IP पते से बहुत अधिक अनुरोध करते हैं तो प्रतिबंध भी लग सकता है। प्रॉक्सी इस समस्या को कम करने में मदद करते हैं क्योंकि वे आपके अनुरोधों को अलग-अलग IP पतों के माध्यम से रूट करते हैं, जिससे ऐसा प्रतीत होता है कि कई उपयोगकर्ता Pinterest ब्राउज़ कर रहे हैं।
क्यों का उपयोग करें:
आप Playwright में launch मेथड के proxy आर्ग्यूमेंट का उपयोग करके आसानी से प्रॉक्सी सेट कर सकते हैं। इस उदाहरण में, "http://your-proxy-address:port" को अपने प्रॉक्सी सर्वर के पते, पोर्ट नंबर और प्रॉक्सी क्रेडेंशियल्स से बदलें।
async def capture_images_from_pinterest(url):
async with async_playwright() as p:
# यहां प्रॉक्सी जोड़ें
browser = await p.chromium.launch(headless=True, proxy={"server": "http://your-proxy-address:port", "username": "username", "password": "password"})
page = await browser.new_page()
नतीजतन, एक प्रॉक्सी के साथ Playwright को एकीकृत करना स्वचालन की प्रभावशीलता को बढ़ाता है। यह संयोजन न केवल एंटी-बॉट तंत्र द्वारा उत्पन्न जोखिमों को कम करता है, बल्कि डेटा संग्रह प्रक्रियाओं की समग्र दक्षता को भी बढ़ाता है।
कई चुनौतियां हैं जो उपयोगकर्ताओं का सामना कर सकते हैं, जब Playright का उपयोग करने के लिए Pinterest डेटा को स्क्रैप करें:
परदे के पीछे और हेडलेस मोड में Playwright का उपयोग प्रभावी रूप से इन चुनौतियों को कम कर सकता है, जिससे ब्लॉक के जोखिम को कम किया जा सकता है और डेटा निष्कर्षण दक्षता बढ़ाया जा सकता है।
टिप्पणियाँ: 0