गूगल सर्च परिणामों को पाइथन में कैसे स्क्रैप करें

Advanced Data Extraction Specialist
मुख्य निष्कर्ष
- पायथन में Google सर्च परिणाम (SERPs) को स्क्रैप करना बाजार अनुसंधान, SEO विश्लेषण, और प्रतिस्पर्धात्मक बुद्धिमत्ता के लिए एक शक्तिशाली तकनीक है।
- Google को सीधे स्क्रैप करना चुनौतीपूर्ण हो सकता है क्योंकि इसमें एंटी-बॉट उपाय, CAPTCHA, और गतिशील सामग्री शामिल होती है।
- विभिन्न तरीके हैं, जैसे कि सरल
requests
औरBeautifulSoup
बुनियादी HTML के लिए, और JavaScript-rendered सामग्री के लिए Selenium और Playwright जैसे हेडलेस ब्राउज़र। - यह गाइड 10 विस्तृत समाधान प्रदान करती है, जिसमें कोड उदाहरण शामिल हैं, जो पायथन का उपयोग करके Google SERPs को प्रभावी ढंग से स्क्रैप करने के लिए हैं।
- विश्वसनीय, बड़े पैमाने पर, और बिना झंझट के Google SERP डेटा निकालने के लिए, Scrapeless जैसी विशेष APIs एक मजबूत और कुशल विकल्प प्रदान करती हैं।
परिचय
डिजिटल युग में, Google सर्च परिणाम पृष्ठ (SERPs) जानकारी का एक खजाना हैं, जो बाजार के रुझानों, प्रतियोगी रणनीतियों, और उपभोक्ता व्यवहार की जानकारी प्रदान करते हैं। इस डेटा को कार्यक्रमmatically निकालने की क्षमता, जिसे Google SERP स्क्रैपिंग के नाम से जाना जाता है, SEO विशेषज्ञों, डेटा विश्लेषकों, और प्रतिस्पर्धात्मक बढ़त प्राप्त करने के इच्छुक व्यवसायों के लिए अमूल्य है। पायथन, अपनी लाइब्रेरी के समृद्ध पारिस्थितिकी तंत्र के साथ, इस कार्य के लिए चुनने वाली भाषा के रूप में सामने आता है। हालांकि, Google को स्क्रैप करना चुनौतीपूर्ण है; Google स्वचालित पहुँच को रोकने के लिए परिष्कृत एंटी-बॉट तंत्र का उपयोग करता है, जिससे सीधे स्क्रैपिंग एक जटिल प्रयास बन जाता है। यह व्यापक गाइड, "पायथन में Google सर्च परिणाम कैसे स्क्रैप करें," आपको बुनियादी तकनीकों से लेकर उन्नत रणनीतियों तक 10 विस्तृत समाधान प्रदान करेगी, जिसमें व्यावहारिक कोड उदाहरण शामिल हैं। हम HTTP अनुरोधों, हेडलेस ब्राउज़रों, और विशेष APIs का उपयोग करने के तरीकों को कवर करेंगे, जिससे आपको Google SERPs से मूल्यवान डेटा निकालने की जानकारी मिलेगी। जो लोग Google के एंटी-स्क्रैपिंग रक्षा को पार करने के लिए एक अधिक सुविकसित और विश्वसनीय दृष्टिकोण की तलाश कर रहे हैं, उनके लिए Scrapeless एक प्रभावी, प्रबंधित समाधान प्रदान करता है।
Google SERP स्क्रैपिंग की चुनौतियों को समझना
Google SERPs को स्क्रैप करना स्थैतिक वेबसाइटों को स्क्रैप करने से कहीं अधिक जटिल है। Google सक्रिय रूप से स्वचालित पहुँच को रोकने के लिए काम करता है ताकि अपने खोज परिणामों की गुणवत्ता बनाए रखी जा सके और अपने डेटा की रक्षा की जा सके। प्रमुख चुनौतियों में शामिल हैं [1]:
- एंटी-बॉट डिटेक्शन: Google उन्नत एल्गोरिदम का उपयोग करता है जो IP पतों, उपयोगकर्ता-एजेंट, व्यवहार पैटर्न, और ब्राउज़र फिंगरप्रिंट के आधार पर बॉट्स का पता लगाता है और उन्हें ब्लॉक करता है।
- CAPTCHA: बार-बार CAPTCHA चुनौतियाँ (जैसे, reCAPTCHA) मानव इंटरएक्शन को प्रमाणित करने के लिए लागू की जाती हैं, जो स्वचालित स्क्रिप्ट को रोकती हैं।
- गतिशील सामग्री: Google SERPs पर कई तत्व गतिशील रूप से JavaScript का उपयोग करके लोड होते हैं, जिन्हें रेंडरिंग के लिए हेडलेस ब्राउज़रों की आवश्यकता होती है।
- रेट लिमिटिंग: Google सख्त रेट लिमिट लगाता है, जो उन IPs को ब्लॉक करता है जो छोटे समय में बहुत अधिक अनुरोध भेजते हैं।
- HTML संरचना में परिवर्तन: Google अक्सर अपने SERP लेआउट को अपडेट करता है, पारंपरिक CSS चयनकर्ताओं या XPath अभिव्यक्तियों को तोड़ता है।
- कानूनी और नैतिक विचार: Google के परिणामों को स्क्रैप करने से कानूनी और नैतिक प्रश्न उठ सकते हैं, इसलिए सेवा की शर्तों और
robots.txt
फ़ाइलों को समझना महत्वपूर्ण है।
इन चुनौतियों पर काबू पाना तकनीकी रणनीतियों और अक्सर, विशेष उपकरणों के उपयोग का एक संयोजन आवश्यक है।
पायथन में Google सर्च परिणामों को स्क्रैप करने के 10 समाधान
1. बुनियादी requests
और BeautifulSoup
(सीमित उपयोग)
बहुत सरल, गैर-JavaScript रेंडर Google सर्च परिणामों के लिए (जो अब दुर्लभ हैं), आप HTML प्राप्त करने के लिए requests
का उपयोग करने का प्रयास कर सकते हैं और इसे पार्स करने के लिए BeautifulSoup
का उपयोग कर सकते हैं। यह तरीका Google SERPs के लिए सामान्यतः अनुशंसित नहीं है क्योंकि इसमें भारी JavaScript रेंडरिंग और एंटी-बॉट उपाय होते हैं, लेकिन यह एक मौलिक अवधारणा है [2]।
कोड संचालन कदम:
- लाइब्रेरी स्थापित करें:
bash
pip install requests beautifulsoup4
- एक अनुरोध करें और पार्स करें:
python
import requests from bs4 import BeautifulSoup query = "वेब स्क्रैपिंग पायथन" url = f"https://www.google.com/search?q={query.replace(" ", "+")}" headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36" } try: response = requests.get(url, headers=headers, timeout=10) response.raise_for_status() # HTTP त्रुटियों के लिए एक अपवाद उठाना soup = BeautifulSoup(response.text, 'html.parser') # यह भाग Google की गतिशील सामग्री और एंटी-बॉट उपायों के कारण विफल होने की अत्यधिक संभावना है # उदाहरण: खोज परिणाम शीर्षकों को खोजने का प्रयास करें (चयनकर्ता परिवर्तनशील हैं) search_results = soup.find_all('div', class_='g') # एक सामान्य, लेकिन अक्सर पुराना, चयनकर्ता for result in search_results: title_tag = result.find('h3') link_tag = result.find('a') if title_tag and link_tag: print(f"शीर्षक: {title_tag.get_text()}") print(f"लिंक: {link_tag['href']}") print("---") except requests.exceptions.RequestException as e: print(f"अनुरोध विफल: {e}") except Exception as e: print(f"त्रुटि: {e}")
प्रसंस्करण विफल: {e}
```
यह विधि मुख्य रूप से बुनियादी स्क्रैपिंग को समझने के लिए शैक्षिक उद्देश्यों के लिए है। वास्तविक Google SERP स्क्रैपिंग के लिए, इसे शायद अवरुद्ध कर दिया जाएगा या अधूरी जानकारी लौटाई जाएगी।
### 2. जावास्क्रिप्ट रेंडरिंग के लिए सेलेनियम का उपयोग करना
सेलेनियम एक शक्तिशाली उपकरण है जो ब्राउज़र स्वचालित करने के लिए सक्षम है, जो जावास्क्रिप्ट-भारी पृष्ठों को रेंडर करने में सक्षम है, जिससे यह Google SERPs जैसे गतिशील सामग्री को स्क्रैप करने के लिए उपयुक्त है। यह पृष्ठ के साथ इंटरैक्ट करने के लिए एक वास्तविक ब्राउज़र (हेडलस या हेडफुल) को नियंत्रित करता है [3]।
**कोड संचालन चरण:**
1. **सेलेनियम और एक वेबड्राइवर (जैसे, क्रोमड्राइवर) स्थापित करें:**
```bash
पिप स्थापित करें सेलेनियम
# https://chromedriver.chromium.org/downloads से क्रोमड्राइवर डाउनलोड करें और इसे अपने PATH में रखें
```
2. **ब्राउज़र इंटरैक्शन को स्वचालित करें:**
```python
सेलेनियम से आयात करें वेबड्राइवर
सेलेनियम.webdriver.chrome.service से सेवा आयात करें
सेलेनियम.webdriver.common.by से द्वारा आयात करें
सेलेनियम.webdriver.chrome.options से विकल्प आयात करें
bs4 से ब्यूटीफुल सूप आयात करें
समय आयात करें
# अपने क्रोमड्राइवर निष्पादन योग्य का पथ
क्रोमड्राइवर_पथ = "/usr/local/bin/chromedriver" # ज़रूरत के अनुसार इस पथ को समायोजित करें
विकल्प = विकल्प()
विकल्प.add_argument("--headless") # हेडलेस मोड में चलाएँ (कोई UI नहीं)
विकल्प.add_argument("--no-sandbox") # कुछ वातावरणों के लिए आवश्यक
विकल्प.add_argument("--disable-dev-shm-usage") # कुछ वातावरणों के लिए आवश्यक
# वास्तविक ब्राउज़र की नकल करने के लिए एक सामान्य यूजर-एजेंट जोड़ें
विकल्प.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, जैसे गेको) क्रोम/116.0.0.0 सफारी/537.36")
सेवा = सेवा(क्रोमड्राइवर_पथ)
ड्राइवर = वेबड्राइवर.Chrome(सेवा=सेवा, विकल्प=विकल्प)
प्रश्न = "वेब स्क्रैपिंग सर्वोत्तम अभ्यास"
url = f"https://www.google.com/search?q={query.replace(" ", "+")}"
कोशिश करें:
ड्राइवर.get(url)
समय.sleep(5) # पृष्ठ के लोड होने और जावास्क्रिप्ट के निष्पादन के लिए प्रतीक्षा करें
# CAPTCHA या सहमति पृष्ठ की जांच करें (Google अक्सर इन्हें दिखाता है)
यदि "मैं रोबोट नहीं हूँ" ड्राइवर.page_source में या "आगे बढ़ने से पहले" ड्राइवर.page_source में है:
प्रिंट("CAPTCHA या सहमति पृष्ठ का पता चला। मैनुअल हस्तक्षेप या उन्नत बाईपास की आवश्यकता है।")
# आपको सहमति बटन पर क्लिक करने या CAPTCHA हल करने के लिए तर्क लागू करने की आवश्यकता हो सकती है
# उदाहरण के लिए, सहमति पृष्ठ पर "मैं सहमत हूँ" बटन पर क्लिक करने के लिए:
# कोशिश करें:
# सहमत_button = ड्राइवर.find_element(By.XPATH, "//button[contains(., 'मैं सहमत हूँ')]")
# सहमत_button.click()
# समय.sleep(3)
# छोड़ें:
# पास
ड्राइवर.save_screenshot("google_captcha_or_consent.png")
प्रिंट("मैनुअल निरीक्षण के लिए स्क्रीनशॉट सहेजा गया।")
# पृष्ठ लोड होने के बाद HTML निकालें
सूप = ब्यूटीफुलसूप(ड्राइवर.page_source, 'html.parser')
# उदाहरण: खोज परिणाम शीर्षक और लिंक निकालें
# Google का SERP ढाँचा अक्सर बदलता है, इसलिए इन चयनकों को अपडेट करने की आवश्यकता हो सकती है
खोज_परिणाम = सूप.find_all('div', class_='g') # जैविक परिणामों के लिए आम वर्ग
यदि नहीं खोज_परिणाम:
खोज_परिणाम = सूप.select('div.yuRUbf') # परिणाम लिंक के लिए दूसरा सामान्य चयनकर्ता
प्रत्येक परिणाम के लिए खोज_परिणाम:
शीर्षक_tag = परिणाम.find('h3')
लिंक_tag = परिणाम.find('a')
यदि शीर्षक_tag और लिंक_tag:
प्रिंट(f"शीर्षक: {शीर्षक_tag.get_text()}")
प्रिंट(f"लिंक: {लिंक_tag['href']}")
प्रिंट("---")
पकड़ें अपवाद के रूप में e:
प्रिंट(f"एक त्रुटि हुई: {e}")
अंततः:
ड्राइवर.quit() # ब्राउज़र बंद करें
```
सेलेनियम गतिशील सामग्री के लिए अधिक मजबूत है लेकिन धीमा और अधिक संसाधन-गहन है। यह CAPTCHA और सहमति पॉप-अप जैसे एंटी-बॉट उपायों के सावधानीपूर्वक प्रबंधन की भी आवश्यकता होती है।
### 3. आधुनिक ब्राउज़र स्वचालन के लिए प्लेरेाइट का उपयोग करना
प्लेयराइट ब्राउज़र स्वचालन के लिए सेलेनियम का एक नया, तेज़ और अधिक विश्वसनीय विकल्प है। यह क्रोमियम, फ़ायरफ़ॉक्स और वेबकिट का समर्थन करता है, और जावास्क्रिप्ट रेंडरिंग और गतिशील सामग्री को संभालने सहित वेब पृष्ठों के साथ इंटरैक्ट करने के लिए साफ़ एपीआई प्रदान करता है। प्लेयराइट में भी स्टेल्थ के साथ मदद कर सकते हैं [4].
**कोड संचालन चरण:**
1. **प्लेयराइट स्थापित करें:**
```bash
पिप स्थापित करें प्लेयराइट
playwright install
```
2. **प्लेयराइट के साथ ब्राउज़र इंटरैक्शन को स्वचालित करें:**
```python
प्लेयराइट.sync_api से आयात करें sync_playwright
समय आयात करें
प्रश्न = "पायथन वेब स्क्रैपिंग ट्यूटोरियल"
url = f"https://www.google.com/search?q={query.replace(" ", "+")}"
के साथ sync_playwright() as p:
ब्राउज़र = p.chromium.launch(headless=True) # हेडलेस मोड में चलाएँ
संदर्भ = ब्राउज़र.new_context(
user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, जैसे गेको) क्रोम/116.0.0.0 सफारी/537.36"
)
पृष्ठ = संदर्भ.new_page()
कोशिश करें:
hi
page.goto(url, wait_until="domcontentloaded")
time.sleep(5) # गतिशील सामग्री को लोड करने का समय दें
# CAPTCHA या सहमति पृष्ठ की जांच करें
यदि page.locator("text=मैं रोबोट नहीं हूँ").इस_visible() या page.locator("text=जारी रखने से पहले").इस_visible():
print("CAPTCHA या सहमति पृष्ठ का पता चला। मैन्युअल हस्तक्षेप या उन्नत बाइपास की आवश्यकता है।")
page.screenshot(path="google_playwright_captcha.png")
और:
# खोज परिणाम निकालें
# चयनकर्ता Google SERPs पर बदलने के लिए अत्यधिक प्रवण होते हैं
# यह उदाहरण जैविक परिणामों के लिए सामान्य तत्वों को खोजने का प्रयास करता है
परिणाम = page.locator("div.g").all()
यदि नहीं परिणाम:
परिणाम = page.locator("div.yuRUbf").all()
के लिए i, परिणाम में enumerate(परिणाम):
शीर्षक_element = परिणाम.locator("h3")
लिंक_element = परिणाम.locator("a")
यदि शीर्षक_element और लिंक_element:
शीर्षक = शीर्षक_element.text_content()
लिंक = लिंक_element.get_attribute("href")
print(f"परिणाम {i+1}:")
print(f" शीर्षक: {शीर्षक}")
print(f" लिंक: {लिंक}")
print("---")
except Exception as e:
print(f"एक त्रुटि हुई: {e}")
अंततः:
browser.close()
```
Playwright, Selenium की तुलना में बेहतर प्रदर्शन और एक अधिक आधुनिक API प्रदान करता है, जिससे यह गतिशील वेब स्क्रैपिंग के लिए एक मजबूत विकल्प है। हालांकि, यह अभी भी Google के एंटी-बॉट चुनौतियों का सामना करता है।
### 4. एक समर्पित SERP API का उपयोग करना (विश्वसनीयता के लिए अनुशंसित)
विशेष रूप से बड़े मात्रा के डेटा के लिए, विश्वसनीय, स्केलेबल, और बिना किसी परेशानी के Google SERP स्क्रैपिंग के लिए, एक समर्पित SERP API का उपयोग सबसे कुशल समाधान है। ये APIs (जैसे Scrapeless का Deep SERP API, SerpApi, या Oxylabs' Google Search API) एंटी-बॉट उपायों, प्रॉक्सी रोटेशन, CAPTCHA को हल करने, और पार्सिंग की सभी जटिलताओं को संभालते हैं, संरचित JSON डेटा सीधे प्रदान करते हैं [5]।
**कोड संचालन कदम (Scrapeless Deep SERP API के साथ अवधारणात्मक):**
1. **Scrapeless खाते के लिए साइन अप करें और अपनी API कुंजी प्राप्त करें।**
2. **Scrapeless Deep SERP API एंडपॉइंट पर HTTP अनुरोध करें:**
```python
import requests
import json
API_KEY = "YOUR_SCRAPELESS_API_KEY" # अपनी वास्तविक API कुंजी से बदलें
प्रश्न = "वेब स्क्रैपिंग उपकरण"
देश = "us" # उदाहरण: संयुक्त राज्य अमेरिका
भाषा = "en" # उदाहरण: अंग्रेज़ी
# Scrapeless Deep SERP API एंडपॉइंट
api_endpoint = "https://api.scrapeless.com/deep-serp"
params = {
"api_key": API_KEY,
"q": प्रश्न,
"country": देश,
"lang": भाषा,
"output": "json" # JSON आउटपुट का अनुरोध करें
}
try:
response = requests.get(api_endpoint, params=params, timeout=30)
response.raise_for_status() # HTTP त्रुटियों के लिए एक अपवाद उठाएं
serp_data = response.json()
यदि serp_data और serp_data.get("organic_results"):
print(f"'{प्रश्न}' के लिए Google SERP सफलतापूर्वक स्क्रैप किया गया:")
के लिए i, परिणाम में enumerate(serp_data["organic_results"]):
print(f"परिणाम {i+1}:")
print(f" शीर्षक: {result.get('title')}")
print(f" लिंक: {result.get('link')}")
print(f" स्निपेट: {result.get('snippet')}")
print("---")
अन्यथा:
print("कोई जैविक परिणाम नहीं मिला या API प्रतिक्रिया खाली थी।")
except requests.exceptions.RequestException as e:
print(f"API अनुरोध विफल: {e}")
except json.JSONDecodeError:
print("JSON प्रतिक्रिया को डिकोड करने में विफल।")
except Exception as e:
print(f"एक अप्रत्याशित त्रुटि हुई: {e}")
```
समर्पित SERP APIs सभी जटिलताओं से दूर कर देती हैं, उच्च विश्वसनीयता और पैमाने पर साफ़, संरचित डेटा प्रदान करती हैं। यह गंभीर डेटा निष्कर्षण के लिए अक्सर सबसे किफायती समाधान होता है।
### 5. प्रॉक्सी रोटेशन लागू करना
Google आक्रामकता से उन IP पतों को ब्लॉक करता है जो बहुत अधिक अनुरोध भेजते हैं। कई IPs के बीच अपने अनुरोधों को वितरित करने के लिए एक रोटेटिंग प्रॉक्सी का पूल का उपयोग करना आवश्यक है, जिससे Google के लिए आपके स्क्रेपर को पहचानना और ब्लॉक करना कठिन हो जाता है [6]।
**कोड संचालन चरण:**
1. **प्रॉक्सियों की एक सूची प्राप्त करें (Google स्क्रैपिंग के लिए आवासीय प्रॉक्सी की सिफारिश की जाती है)।**
2. **अपने `requests` या हेडलेस ब्राउज़र सेटअप में प्रॉक्सी रोटेशन को एकीकृत करें:**
```python
import requests
import random
import time
proxies = [
"http://user:pass@proxy1.example.com:8080",
"http://user:pass@proxy2.example.com:8080",
"http://user:pass@proxy3.example.com:8080",
]
प्रश्न = "सर्वश्रेष्ठ वेब स्क्रैपिंग फ्रेमवर्क"
url = f"https://www.google.com/search?q={query.replace(" ", "+")}"
headers = {
Here is the translation of the provided text into Hindi:
"यूजर-एजेंट": "मोज़िला/5.0 (विंडोज NT 10.0; विन64; x64) एपलवेबकिट/537.36 (KHTML, जैसे Gecko) क्रोम/116.0.0.0 सफारी/537.36"
}
के लिए _ में रेंज(5): # विभिन्न प्रॉक्सी का उपयोग करके 5 अनुरोध करें
प्रॉक्सी = यादृच्छिक.विकल्प(प्रॉक्सीस)
प्रॉक्सी_डिक्ट = {
"http": प्रॉक्सी,
"https": प्रॉक्सी,
}
प्रिंट(f"प्रॉक्सी का उपयोग कर रहे हैं: {प्रॉक्सी}")
प्रयास करें:
प्रतिक्रियाएँ = अनुरोध.प्राप्त(url, हेडर्स=हेडर्स, प्रॉक्सी=प्रॉक्सी_डिक्ट, समय-सीमा=15)
प्रतिक्रियाएँ.raise_for_status()
प्रिंट(f"{प्रॉक्सी} के साथ अनुरोध सफल। स्थिति: {प्रतिक्रिया.status_code}")
# यहां प्रतिक्रिया संसाधित करें
# सूप = ब्यूटीफुलसूप(प्रतिक्रिया.text, 'html.parser')
# ... डेटा निकाले ...
कैच करें अनुरोध.exceptions.RequestException के रूप में e:
प्रिंट(f"{प्रॉक्सी} के साथ अनुरोध विफल: {e}")
समय.नींद(यादृच्छिक.एकीकृत(5, 10)) # अनुरोधों के बीच यादृच्छिक देरी जोड़ें
बड़ी संख्या में उच्च-गुणवत्ता वाली प्रॉक्सी को प्रबंधित करना जटिल हो सकता है। स्क्रैपलेस जैसी सेवाएँ अक्सर अपने प्रस्ताव का हिस्सा के रूप में प्रॉक्सी रोटेशन शामिल करती हैं।
6. यूजर-एजेंट और अनुरोध हेडर्स का यादृच्छिककरण
गूगल भी स्वचालित ट्रैफ़िक की पहचान के लिए यूजर-एजेंट
स्ट्रिंग और अन्य अनुरोध हेडर्स का विश्लेषण करता है। एक सुसंगत या पुराना यूजर-एजेंट
एक लाल झंडा है। इन हेडर्स को यादृच्छिक बनाना आपके अनुरोधों को विभिन्न, वैध ब्राउज़रों से आने जैसा दिखाता है [7]।
कोड संचालन चरण:
- विविध
यूजर-एजेंट
स्ट्रिंग और अन्य सामान्य हेडर्स की एक सूची बनाए रखें। - प्रत्येक अनुरोध के लिए एक यादृच्छिक
यूजर-एजेंट
चुनें:
python
आयात अनुरोध
आयात यादृच्छिक
आयात समय
यूजर_एजेंट्स = [
"मोज़िला/5.0 (विंडोज NT 10.0; विन64; x64) एपलवेबकिट/537.36 (KHTML, जैसे Gecko) क्रोम/116.0.0.0 सफारी/537.36",
"मोज़िला/5.0 (मैकिंटॉश; इंटेल मैक ओएस एक्स 10_15_7) एपलवेबकिट/537.36 (KHTML, जैसे Gecko) क्रोम/116.0.0.0 सफारी/537.36",
"मोज़िला/5.0 (विंडोज NT 10.0; विन64; x64; rv:109.0) गेको/20100101 फायरफॉक्स/117.0",
"मोज़िला/5.0 (मैकिंटॉश; इंटेल मैक ओएस एक्स 10_15_7) एपलवेबकिट/605.1.15 (KHTML, जैसे Gecko) संस्करण/16.6 सफारी/605.1.15",
"मोज़िला/5.0 (लिनक्स; एंड्रॉइड 10; SM-G973F) एपलवेबकिट/537.36 (KHTML, जैसे Gecko) क्रोम/116.0.0.0 मोबाइल सफारी/537.36"
]
क्वेरी = "पायथन वेब स्क्रैपिंग टूल"
url = f"https://www.google.com/search?q={क्वेरी.replace(" ", "+")}"
के लिए _ में रेंज(3): # विभिन्न यूजर-एजेंट के साथ कुछ अनुरोध करें
हेडर्स = {
"यूजर-एजेंट": यादृच्छिक.विकल्प(यूजर_एजेंट्स),
"स्वीकृति": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
"स्वीकृति-भाषा": "en-US,en;q=0.5",
"संपर्क": "ज-mार-जीवित",
"अपग्रेड-इनसेक्योर-अनुरोध": "1"
}
प्रिंट(f"यूजर-एजेंट का उपयोग कर रहे हैं: {हेडर्स['यूजर-एजेंट']}")
प्रयास करें:
प्रतिक्रियाएँ = अनुरोध.प्राप्त(url, हेडर्स=हेडर्स, समय-सीमा=15)
प्रतिक्रियाएँ.raise_for_status()
प्रिंट(f"अनुरोध सफल। स्थिति: {प्रतिक्रिया.status_code}")
# प्रतिक्रिया संसाधित करें
कैच करें अनुरोध.exceptions.RequestException के रूप में e:
प्रिंट(f"अनुरोध विफल: {e}")
समय.नींद(यादृच्छिक.एकीकृत(3, 7)) # यादृच्छिक देरी
प्रॉक्सी रोटेशन के साथ इसको मिलाना आपके गुप्त क्षमताओं को काफी बढ़ाता है।
7. गूगल सहमति और CAPTCHAs को संभालना
गूगल अक्सर नई या संदिग्ध उपयोगकर्ताओं के लिए सहमति स्क्रीन (जैसे, GDPR सहमति) और CAPTCHAs प्रस्तुत करता है। इन्हें स्वचालित रूप से बायपास करना चुनौतीपूर्ण है। सहमति के लिए, आपको "मैं सहमत हूं" बटन को खोजने और क्लिक करने की आवश्यकता हो सकती है। CAPTCHAs के लिए, अक्सर एक तीसरे पक्ष की CAPTCHA हल करने वाली सेवा के साथ एकीकरण आवश्यक होता है [8]।
कोड संचालन चरण (सिद्धांतात्मक सेलेनियम के साथ):
python
सेलेनियम आयात webdriver
सेलेनियम.webdriver.common.by से आयात By
सेलेनियम.webdriver.support.ui से आयात WebDriverWait
सेलेनियम.webdriver.support.expected_conditions से आयात EC
आयात समय
# ... (संचालित कोड जैसा कि समाधान #2 में है) ...
ड्राइवर.प्राप्त("https://www.google.com")
# सहमति स्क्रीन को संभालें
कोशिश करें:
# सहमति फॉर्म के दृश्य होने की प्रतीक्षा करें
सहमति_फॉर्म = WebDriverWait(d्राइवर, 10).जब तक(
EC.presence_of_element_located((By.XPATH, "//form[contains(@action, 'consent')]"))
)
# "मैं सहमत हूं" या समान बटन खोजें और क्लिक करें
सहमति_बटन = सहमति_फॉर्म.find_element(By.XPATH, ".//button[contains(., 'मैं सहमत हूं') या contains(., 'सभी स्वीकार करें')]")
सहमति_बटन.click()
प्रिंट("सहमति बटन पर क्लिक किया गया।")
समय.नींद(3)
कैच करें अपवाद के रूप में e:
प्रिंट(f"सहमति बटन नहीं मिल सका या क्लिक नहीं किया जा सका: {e}")
# CAPTCHA को संभालें (सिद्धांतात्मक - CAPTCHA हल करने वाली सेवा की आवश्यकता होती है)
कोशिश करें:
यदि चालक.find_element(By.ID, "recaptcha").प्रदर्शित होता है():
प्रिंट("reCAPTCHA का पता चला। समाधान सेवा के साथ एकीकरण की आवश्यकता है।")
# 1. reCAPTCHA तत्व से साइट कुंजी प्राप्त करें।
# 2. साइट कुंजी और पृष्ठ URL को CAPTCHA हल करने वाली सेवा API को भेजें।
# 3. सेवा से एक टोकन प्राप्त करें।
4. पृष्ठ में टोकन डालें (जैसे, एक छिपे हुए टेक्स्टएरिया में)।
# 5. फॉर्म सबमिट करें।
except:
print("कोई reCAPTCHA का पता नहीं चला।")
... (स्क्रैपिंग के साथ जारी रखें) ...
driver.quit()
यह एक जटिल और अक्सर अविश्वसनीय प्रक्रिया है। विशेष SERP एपीआई जैसे Scrapeless इसे स्वचालित रूप से संभालते हैं।
### 8. Google खोज परिणामों के माध्यम से पृष्ठानुक्रमित करना
Google SERPs पृष्ठानुक्रमित होते हैं, और आपको अक्सर कई पृष्ठों को स्क्रैप करने की आवश्यकता होती है। इसमें "अगला" बटन पहचानना या आगे के पृष्ठों के लिए URL बनाना शामिल है [9]।
**कोड संचालन चरण (Selenium के साथ):**
```python
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
# ... (Selenium सेटअप कोड) ...
query = "डेटा विज्ञान के लिए पायथन"
url = f"https://www.google.com/search?q={query.replace(' ', '+')}"
driver.get(url)
max_pages = 3
for page_num in range(max_pages):
print(f"पृष्ठ {page_num + 1} को स्क्रैप कर रहे हैं...")
# ... (वर्तमान पृष्ठ से डेटा स्क्रैप करें) ...
try:
# "अगला" बटन खोजें और क्लिक करें
next_button = driver.find_element(By.ID, "pnnext")
next_button.click()
time.sleep(random.uniform(3, 6)) # अगला पृष्ठ लोड होने का इंतजार करें
except Exception as e:
print(f"'अगला' बटन नहीं मिला या क्लिक नहीं कर सके: {e}")
break # यदि अधिक पृष्ठ नहीं हैं तो लूप से बाहर निकलें
driver.quit()
वैकल्पिक रूप से, आप start
पैरामीटर को संशोधित करके प्रत्येक पृष्ठ के लिए URL बना सकते हैं (जैसे, &start=10
पृष्ठ 2 के लिए, &start=20
पृष्ठ 3 के लिए, आदि)।
9. विभिन्न SERP सुविधाओं (विज्ञापन, विशेष स्निपेट, आदि) को पार्स करना
Google SERPs में जैविक परिणामों के अलावा विभिन्न सुविधाएं होती हैं, जैसे विज्ञापन, विशेष स्निपेट, "लोगों ने भी पूछें" बॉक्स और स्थानीय पैक। इन्हें स्क्रैप करने के लिए प्रत्येक विशेषता प्रकार के लिए विभिन्न चयनकर्ताओं की आवश्यकता होती है [10]।
कोड संचालन चरण (BeautifulSoup के साथ):
python
import requests
from bs4 import BeautifulSoup
# ... (मान लें कि आपने `soup` में HTML सामग्री प्राप्त की है) ...
# चयनकर्ताओं के उदाहरण (ये बदलने की उच्च संभावना हैं):
# जैविक परिणाम
organic_results = soup.select("div.g")
# विज्ञापन (अक्सर विशेष डेटा विशेषताओं के साथ होते हैं)
ads = soup.select("div[data-text-ad='1']")
# विशेष स्निपेट
featured_snippet = soup.select_one("div.kp-wholepage")
# "लोगों ने भी पूछें"
people_also_ask = soup.select("div[data-init-vis='true']")
print(f"पाए गए {len(organic_results)} जैविक परिणाम।")
print(f"पाए गए {len(ads)} विज्ञापन।")
if featured_snippet:
print("एक विशेष स्निपेट मिला।")
if people_also_ask:
print(" 'लोगों ने भी पूछें' भाग मिला।")
यह प्रत्येक विशेषता के लिए सही चयनकर्ताओं की पहचान के लिए SERP HTML का सावधानीपूर्वक निरीक्षण करने की आवश्यकता होती है।
10. स्टेल्थ प्लगइन्स के साथ एक हेडलेस ब्राउज़र का उपयोग करना
कुछ स्टेल्थ तकनीकों को स्वचालित करने के लिए, आप स्टेल्थ प्लगइन्स के साथ हेडलेस ब्राउज़रों का उपयोग कर सकते हैं। उदाहरण के लिए, playwright-extra
और इसके स्टेल्थ प्लगइन का उपयोग एंटी-डिटेक्शन करने में मदद कर सकता है, जो स्वचालित रूप से ब्राउज़र गुणों को संशोधित करता है [11]।
कोड संचालन चरण:
- लाइब्रेरी स्थापित करें:
bash
pip install playwright-extra pip install puppeteer-extra-plugin-stealth
- स्टेल्थ प्लगइन लागू करें:
python
from playwright_extra import stealth_sync from playwright.sync_api import sync_playwright stealth_sync.apply() with sync_playwright() as p: browser = p.chromium.launch(headless=True) page = browser.new_page() page.goto("https://bot.sannysoft.com/") # एक बॉट डिटेक्शन परीक्षण पृष्ठ page.screenshot(path="playwright_stealth_test.png") browser.close()
तुलना सारांश: Google SERP स्क्रैपिंग विधियाँ
विधि | फायदे | नुकसान | सर्वश्रेष्ठ के लिए |
---|---|---|---|
requests + BeautifulSoup |
सरल, हल्का, तेज (यदि यह काम करता है) | आसानी से अवरुद्ध, कोई जावास्क्रिप्ट रेंडरिंग नहीं, Google के लिए अविश्वसनीय | शैक्षणिक उद्देश्यों, गैर-JS वेबसाइटों के लिए |
Selenium | जावास्क्रिप्ट को रेंडर करता है, उपयोगकर्ता क्रियाओं का अनुकरण करता है | धीमा, संसाधनों का अधिक उपयोग, सेटअप में जटिल, अभी भी पता लगाया जा सकता है | गतिशील वेबसाइटों, छोटे पैमाने पर स्क्रैपिंग के लिए |
Playwright | Selenium से तेज, आधुनिक एपीआई, विश्वसनीय | अभी भी एंटी-बॉट चुनौतियों का सामना करता है, सावधानीपूर्वक कॉन्फ़िगरेशन की आवश्यकता होती है | आधुनिक गतिशील वेबसाइटों, छोटे से मध्यम पैमाने के लिए |
समर्पित SERP API (जैसे, Scrapeless) | अत्यधिक विश्वसनीय, स्केलेबल, सभी जटिलताओं को संभालता है | भुगतान सेवा (लेकिन अक्सर पैमाने पर लागत-क्षमता से प्रभावी) | बड़े पैमाने पर, विश्वसनीय, परेशानी-मुक्त डेटा निकासी |
प्रॉक्सी रोटेशन | आईपी ब्लॉकों से बचता है, ट्रैफिक वितरित करता है | अच्छे गुणवत्ता वाले प्रॉक्सी का पूल प्रबंधित करने की आवश्यकता होती है, जटिल हो सकता है | कोई गंभीर स्क्रैपिंग प्रोजेक्ट |
यूजर-एजेंट रैंडमाइजेशन | फिंगरप्रिंटिंग से बचने में मदद करता है | सरल लेकिन अपने आप में पर्याप्त नहीं | कोई स्क्रैपिंग प्रोजेक्ट |
कैप्चा सॉल्विंग सेवाएं | कैप्चा को बायपास करता है | लागत और जटिलता बढ़ाता है, धीमा हो सकता है | नियमित रूप से कैप्चा वाले वेबसाइट |
स्टेल्थ प्लगइन्स | कुछ स्टेल्थ तकनीकों को स्वचालित करता है | पूर्ण समाधान नहीं है, उन्नत पहचान के खिलाफ काम नहीं कर सकता | हेडलेस ब्राउज़र स्टेल्थ को बढ़ाना |
यह तालिका यह दर्शाती है कि विश्वसनीय और स्केलेबल Google SERP स्क्रैपिंग के लिए एक समर्पित SERP API अक्सर सबसे व्यावहारिक और प्रभावी समाधान है।
क्यों Scrapeless Google SERP स्क्रैपिंग के लिए सर्वोत्तम समाधान है
जबकि उपरोक्त तरीके Google SERPs को स्क्रैप करने के लिए एक ठोस नींव प्रदान करते हैं, उन्हें लागू करने और बनाए रखने के लिए महत्वपूर्ण प्रयास की आवश्यकता होती है, विशेष रूप से Google की लगातार विकसित होती एंटी-बॉट उपायों के सामने। यही वह जगह है जहां Scrapeless सर्वोत्तम समाधान के रूप में उभरता है। Scrapeless एक पूरी तरह से प्रबंधित वेब स्क्रैपिंग API है जिसे विशेष रूप से Google जैसे चुनौतीपूर्ण स्रोतों से बड़े पैमाने पर डेटा निष्कर्षण की जटिलताओं को संभालने के लिए डिज़ाइन किया गया है।
Scrapeless's डीप SERP API सभी तकनीकी बाधाओं को हटा देता है। यह स्वचालित रूप से एक विशाल निवास प्रॉक्सी पूल का प्रबंधन करता है, यूजर-एजेंट और हेडर्स को घुमाता है, कैप्चा को हल करता है, और जावास्क्रिप्ट को प्रस्तुत करता है, यह सुनिश्चित करते हुए कि आपके अनुरोध वास्तविक उपयोगकर्ताओं के अनुरोधों से अद्वितीय नहीं हैं। प्रॉक्सी रोटेशन, कैप्चा सॉल्विंग, और ब्राउज़र फिंगरप्रिंटिंग के लिए जटिल कोड को संभालने के बजाय, आप बस एक API कॉल कर सकते हैं और Google SERP का साफ़, संरचित JSON डेटा प्राप्त कर सकते हैं। यह न केवल आपके विकास और रखरखाव के कई घंटे बचाता है, बल्कि आपके सभी Google SERP डेटा आवश्यकताओं के लिए एक अत्यधिक विश्वसनीय, स्केलेबल और लागत-कुशल समाधान भी प्रदान करता है। चाहे आप रैंकिंग की निगरानी कर रहे हों, विज्ञापनों की निगरानी कर रहे हों, या मार्केट रिसर्च कर रहे हों, Scrapeless आपको डेटा का लाभ उठाने पर ध्यान केंद्रित करने में सक्षम बनाता है, न कि इसे प्राप्त करने के संघर्ष पर।
निष्कर्ष
Python में Google सर्च परिणामों को स्क्रैप करना एक शक्तिशाली क्षमता है जो विभिन्न अनुप्रयोगों के लिए डेटा का एक समृद्ध खजाना खोल सकता है। सरल HTTP अनुरोधों से लेकर Selenium और Playwright के साथ उन्नत ब्राउज़र स्वचालन तक, इस कार्य का पालन करने के कई तरीके हैं। हालांकि, यह रास्ता चुनौतियों से भरा है, जिसमें एंटी-बॉट सिस्टम, कैप्चा और गतिशील सामग्री शामिल हैं। इस गाइड में प्रस्तुत 10 समाधानों को समझकर, आप इन जटिलताओं का सामना करने और अधिक प्रभावी Google SERP स्क्रैपर्स बनाने के लिए बेहतर ढंग से तैयार हैं।
उन लोगों के लिए जिन्हें Google SERP डेटा तक विश्वसनीय, स्केलेबल और परेशानी रहित पहुँच की आवश्यकता है, एक समर्पित SERP API के लाभ स्पष्ट हैं। Scrapeless एक मजबूत और प्रभावी समाधान प्रदान करता है जो सभी अंतर्निहित जटिलताओं को संभालता है, जिससे आप एक सरल API कॉल के साथ साफ़, संरचित डेटा प्राप्त कर सकते हैं। यह न केवल आपके विकास प्रक्रिया को तेज करता है बल्कि आपके डेटा निष्कर्षण परियोजनाओं की दीर्घकालिक व्यवहार्यता और सफलता को भी सुनिश्चित करता है।
क्या आप तकनीकी सिरदर्द के बिना Google SERP डेटा की पूरी क्षमता को अनलॉक करने के लिए तैयार हैं?
Scrapeless's Deep SERP API का अन्वेषण करें और आज ही Google को सरलता से स्क्रैप करना शुरू करें!
अक्सर पूछे जाने वाले प्रश्न (FAQ)
Q1: क्या Google खोज परिणामों को स्क्रैप करना कानूनी है?
A1: Google खोज परिणामों को स्क्रैप करने की कानूनीता एक जटिल मुद्दा है जो विभिन्न कारकों पर निर्भर करती है, जिसमें आपकी अधिकार क्षेत्र, स्क्रैपिंग का उद्देश्य, और आप डेटा का कैसे उपयोग करते हैं। जबकि सार्वजनिक रूप से उपलब्ध डेटा को स्क्रैप करना सामान्यतः कानूनी माना जाता है, Google's robots.txt
फ़ाइल और सेवा की शर्तों का सम्मान करना महत्वपूर्ण है। व्यावसायिक उपयोग के लिए, कानूनी पेशेवर से परामर्श करना सलाहकार है।
Q2: मेरी Python स्क्रिप्ट्स Google द्वारा क्यों ब्लॉक हो जाती हैं?
A2: आपकी स्क्रिप्ट्स संभवतः ब्लॉक हो जाती हैं क्योंकि Google की एंटी-बॉट प्रणाली स्वचालित व्यवहार का पता लगाती है। यह किसी एक आईपी से उच्च अनुरोधों की मात्रा, गैर-मानक यूजर-एजेंट, पूर्वानुमानित अनुरोध पैटर्न, या ब्राउज़र की विशेषताओं जैसे कि स्वचालन का संकेत देने वाली प्रॉपर्टीज के कारण हो सकता है (जैसे navigator.webdriver
ध्वज)।
Q3: मैं एक दिन में कितने Google खोजों को स्क्रैप कर सकता हूँ?
A3: इसका कोई आधिकारिक सीमा नहीं है, लेकिन Google तेजी से उन आईपी को ब्लॉक कर देगा जो बॉट जैसे व्यवहार का प्रदर्शन करते हैं। उचित प्रॉक्सी रोटेशन और स्टेल्थ तकनीकों के बिना, आप केवल कुछ दर्जन अनुरोध करने में सक्षम हो सकते हैं इससे पहले कि आपको अस्थायी रूप से ब्लॉक कर दिया जाए। एक मजबूत सेटअप या समर्पित SERP API के साथ, आप प्रति दिन हजारों या यहां तक कि लाखों अनुरोध कर सकते हैं।
Q4: Google को स्क्रैप करने के लिए सबसे अच्छा Python पुस्तकालय कौन सा है?
A4: कोई एक "श्रेष्ठ" पुस्तकालय नहीं है, क्योंकि यह कार्य की जटिलता पर निर्भर करता है। साधारण मामलों के लिए (जो शायद ही कभी गूगल पर लागू होते हैं), requests
और BeautifulSoup
पर्याप्त हैं। गतिशील सामग्री के लिए, Playwright
एक आधुनिक और शक्तिशाली विकल्प है। हालांकि, विश्वसनीय और स्केलेबल गूगल स्क्रैपिंग के लिए, Scrapeless जैसे समर्पित SERP API का उपयोग करना सबसे प्रभावी तरीका है।
Q5: Scrapeless जैसे SERP API कैसे काम करता है?
A5: Scrapeless जैसे SERP API एक मध्यस्थ के रूप में कार्य करता है। आप अपना खोज प्रश्न API को भेजते हैं, और यह गूगल को अनुरोध करने की सभी जटिलताओं को संभालता है, जिसमें बड़े पूल के प्रॉक्सी का उपयोग, यूजर-एजेंट्स को घुमाना, CAPTCHA हल करना, और जावास्क्रिप्ट को रेंडर करना शामिल है। फिर यह HTML प्रतिक्रिया को पार्स करता है और आपको साफ, संरचित JSON डेटा वापस करता है, जिससे आपको सीधे स्क्रैपिंग की चुनौतियों से बचाता है।
स्क्रैपलेस में, हम केवल सार्वजनिक रूप से उपलब्ध डेटा का उपयोग करते हैं, जबकि लागू कानूनों, विनियमों और वेबसाइट गोपनीयता नीतियों का सख्ती से अनुपालन करते हैं। इस ब्लॉग में सामग्री केवल प्रदर्शन उद्देश्यों के लिए है और इसमें कोई अवैध या उल्लंघन करने वाली गतिविधियों को शामिल नहीं किया गया है। हम इस ब्लॉग या तृतीय-पक्ष लिंक से जानकारी के उपयोग के लिए सभी देयता को कोई गारंटी नहीं देते हैं और सभी देयता का खुलासा करते हैं। किसी भी स्क्रैपिंग गतिविधियों में संलग्न होने से पहले, अपने कानूनी सलाहकार से परामर्श करें और लक्ष्य वेबसाइट की सेवा की शर्तों की समीक्षा करें या आवश्यक अनुमतियाँ प्राप्त करें।