गूगल सर्च एपीआई: खोज क्वेरी से संरचित JSON तक
Advanced Data Extraction Specialist
TL;DR:
- स्क्रैपलेस गूगल सर्च एपीआई संरचित JSON के रूप में खोज परिणाम लौटाता है। शोध उपकरणों, SEO रिपोर्टों, और स्रोत-खोज कार्यप्रवाह में जैविक-परिणाम क्षेत्रों का उपयोग करें।
- खोज संदर्भ परिणाम के साथ है। क्वेरी, देश, भाषा, और अवलोकन समय को एक साथ रखें ताकि बाद में तुलनाएं स्पष्ट अर्थ रख सकें।
- लंबित कार्य एक खाली परिणाम सेट से अलग है।
organic_resultsको पढ़ने या CSV बनाने की कोशिश करने से पहले HTTP 201 को अलग से संभालें।
गूगल सर्च डेटा तब उपयोगी होता है जब एक टीम प्रत्येक परिणाम को उस प्रश्न और बाजार से जोड़ सकती है जिसने इसे उत्पन्न किया। एक शीर्षक और URL जो स्प्रेडशीट में कॉपी किए जाते हैं, उस संदर्भ के बहुत से हिस्से को खो देते हैं। एक संरचित प्रतिक्रिया एक अनुप्रयोग को इसे शुरुआत से संरक्षित करने की अनुमति देती है।
अपडेट किया गया स्क्रैपलेस गूगल सर्च एपीआई एक खोज क्वेरी से JSON तक एक प्रबंधित मार्ग प्रदान करता है। आपका अनुप्रयोग अनुरोध भेजता है और लौटाए गए डेटा का उपयोग कैसे करना है, यह तय करता है। प्रॉक्सी और कैप्चा हैंडलिंग सेवा पक्ष पर चलती है, जिससे आपको अपनी टीम को बनाए रखने के लिए संग्रह अवसंरचना को कम करने में मदद मिलती है।
यह गाइड उस हैंडऑफ़ का पालन करती है: एक खोज संदर्भ चुनें, एक अनुरोध सबमिट करें, प्रतिक्रिया पढ़ें, और एक डेटा सेट सुरक्षित करें जिसे कोई और समझ सके।
गूगल सर्च एपीआई क्या लौटाता है
गूगल सर्च एपीआई संरचित खोज डेटा लौटाता है, जिसमें जैविक परिणाम शीर्ष स्तर पर organic_results ऐरे में उपलब्ध होते हैं जब वे मौजूद होते हैं। एक प्राकृतिक परिणाम में position, title, link, और snippet शामिल हो सकते हैं। प्रतिक्रिया में पेजिनेशन जानकारी और अन्य खोज मॉड्यूल भी हो सकते हैं, जो क्वेरी और लौटाए गए परिणामों पर निर्भर करते हैं।
एक उपसमुच्चय को निकालने से पहले मूल प्रतिक्रिया को रखें। एक समतल तालिका विश्लेषण के लिए सुविधाजनक होती है, लेकिन यह एक जानबूझकर मैपिंग के बिना हर स्तरित वस्तु को प्रदर्शित नहीं कर सकती। JSON डेटा मॉडल ऐरे, वस्तुओं, स्ट्रिंग्स, संख्याओं, बूलियंस, और नल का अंतर करता है; इन भेदभावों को संरक्षण करने से बाद की प्रोसेसिंग को सरल बनाता है।
एक स्निपेट एक खोज-परिणाम का अंश है। यह गंतव्य पृष्ठ की पूरी सामग्री प्रदान नहीं करता है। यदि एक शोध अनुप्रयोग को किसी लेख के证据 की आवश्यकता होती है, तो अनुप्रयोग को उस पृष्ठ को अलग से प्राप्त और समीक्षा करनी चाहिए।
एक छोटा पहला अनुरोध तैयार करें
एक पहले अनुरोध की आवश्यकता होती है एक स्क्रैपलेस एपीआई कुंजी, एक क्वेरी, और एक क्लाइंट जो HTTP के माध्यम से JSON भेज सकता है। गूगल सर्च एपीआई तक पहुँच रखने वाले खाते का उपयोग करें और कुंजी को SCRAPELESS_API_KEY पर्यावरण चर में रखें।
नीचे वाले पायथन उदाहरण के लिए, अपने प्रोजेक्ट वातावरण में requests पैकेज स्थापित करें। शेष मॉड्यूल पायथन की मानक पुस्तकालय से आते हैं। स्क्रिप्ट को google_search_export.py के रूप में सहेजें, फिर स्थानीय शेल या सीक्रेट मैनेजर के माध्यम से पर्यावरण चर सेट करने के बाद python3 google_search_export.py के साथ इसे चलाएं।
उदाहरण तटस्थ क्वेरी coffee, देश us, और भाषा en का उपयोग करता है। कीवर्ड या अनुसूचित कार्य की सूची पेश करने से पहले इस छोटे इनपुट से शुरू करें। पहले प्रतिक्रिया की आकृति का निरीक्षण करें; वितरण डेटा मॉडल इस पर निर्भर करता है।
प्रमाणित अनुरोध एक पूर्वापेक्षा है जिसके लिए आपका अपना खाता कुंजी की आवश्यकता होती है। उदाहरण का अनुरोध आकार वर्तमान एपीआई संदर्भ का पालन करता है; इसे एक कैद वाले लाइव खाता रन के रूप में प्रस्तुत नहीं किया गया है।
देश, भाषा, और इनपुट मोड चुनें
देश, भाषा, और स्थान खोज अनुरोध के विभिन्न भागों का वर्णन करते हैं। gl खोज देश को चुनता है, hl खोज भाषा को चयनित करता है, और location इस बात का विशिष्ट करता है कि खोज कहां से उत्पन्न होनी चाहिए। google_domain गूगल डोमेन को चुनता है। वर्तमान उपकरण विकल्प डेस्कटॉप का समर्थन करता है।
गूगल सर्च एपीआई पैरामीटर मॉडल में दो इनपुट नियम भी हैं जो यह प्रभावित करते हैं कि आप अनुरोध कैसे बनाते हैं:
- एक क्वेरी के लिए प्रत्यक्ष पैरामीटर के माध्यम से व्यक्त करने के लिए
qका प्रयोग करें। वैकल्पिक रूप से, एक पूर्ण गूगल सर्चurlप्रदान करें; जबurlप्रदान किया जाता है, तो अन्य इनपुट पैरामीटर अनदेखी कर दी जाती हैं। - या तो
locationयाuuleका चुनाव करें। उनका एक साथ उपयोग नहीं किया जा सकता है।
बाजारों के बीच तुलना के लिए, प्रत्येक प्रतिक्रिया के साथ पूर्ण इनपुट ऑब्जेक्ट को सुरक्षित करें। एक ही देश और भाषा सेट करने से इच्छित संदर्भ स्पष्ट होता है, लेकिन यह अवलोकनों के बीच समान परिणामों की गारंटी नहीं देता है या किसी विशेष व्यक्ति के साइन-इन खोज इतिहास को पुन: उत्पन्न नहीं करता है।
प्रश्नों में site:, inurl:, और intitle: जैसे ऑपरेटर शामिल हो सकते हैं। उनका उपयोग शोध प्रश्न को संकीर्ण करने के लिए करें। एक साइट-प्रतिबंधित खोज अनुक्रमित पृष्ठों की पूर्ण सूची नहीं है, इसलिए इसके परिणामों को सटीक अनुक्रमणिका-लाभ काउंट नहीं बनाना चाहिए।
JSON अनुरोध करें और जैविक परिणाम निर्यात करें
अनुरोध POST https://api.scrapeless.com/api/v1/scraper/request, scraper.google.search अभिनेता, और एक x-api-token हेडर का उपयोग करता है। स्क्रिप्ट प्रतिक्रिया को उसके इनपुट और प्राप्ति समय के साथ सहेजती है, फिर HTTP 200 के बाद जैविक परिणामों को CSV में निर्यात करती है।
नोट: नेटवर्क अनुरोध के लिए आपके Scrapeless API कुंजी की आवश्यकता होती है और इस लेख के लिए किसी लाइव खाते के साथ निष्पादित नहीं किया गया है। स्क्रिप्ट निरीक्षण के लिए HTTP 201 कार्य प्रतिक्रिया को बनाए रखती है; यह कार्य-परिणाम पुनर्प्राप्ति को लागू नहीं करती है।
python
import csv
import json
import os
from datetime import datetime, timezone
from pathlib import Path
import requests
def spreadsheet_text(value):
text = "" if value is None else str(value)
if text.lstrip().startswith(("=", "+", "-", "@")) or text.startswith(("\t", "\r")):
return "'" + text
return text
def export_results(payload, context, received_at, output_path):
results = payload.get("organic_results")
if not isinstance(results, list):
print("No usable organic_results array; inspect the saved JSON.")
return
fields = ["q", "gl", "hl", "received_at", "position", "title", "link", "snippet"]
with output_path.open("w", encoding="utf-8", newline="") as stream:
writer = csv.DictWriter(stream, fieldnames=fields)
writer.writeheader()
for item in results:
if not isinstance(item, dict):
raise ValueError("Unexpected organic result item; inspect the saved JSON.")
row = {name: item.get(name) for name in ("position", "title", "link", "snippet")}
row.update(context, received_at=received_at)
writer.writerow({name: spreadsheet_text(row.get(name)) for name in fields})
print(f"Exported {len(results)} organic results to {output_path}")
def main():
context = {"q": "coffee", "gl": "us", "hl": "en"}
response = requests.post(
"https://api.scrapeless.com/api/v1/scraper/request",
headers={"x-api-token": os.environ["SCRAPELESS_API_KEY"]},
json={"actor": "scraper.google.search", "input": context},
timeout=120,
)
response.raise_for_status()
received_at = datetime.now(timezone.utc).isoformat()
run_id = datetime.now(timezone.utc).strftime("%Y%m%dT%H%M%S%fZ")
payload = response.json()
record = {"input": context, "received_at": received_at,
"http_status": response.status_code, "response": payload}
output = Path(f"google-search-{run_id}.json")
output.write_text(json.dumps(record, ensure_ascii=False, indent=2), encoding="utf-8")
if response.status_code == 201:
print(f"Task pending. Inspect taskId in {output}; no CSV was created.")
return
if response.status_code != 200 or not isinstance(payload, dict):
raise ValueError(f"Unexpected response; inspect {output}")
export_results(payload, context, received_at, output.with_suffix(".csv"))
if __name__ == "__main__":
main()
120 समय समाप्ति इस उदाहरण में एक ग्राहक सेटिंग है, सेवा प्रतिक्रिया के समय की प्रतिबद्धता नहीं। ग्राहक द्वारा प्रतिक्रिया आने के बाद रिकॉर्ड किया गया प्राप्ति समय है; यह Google द्वारा प्रदान किया गया एक टाइमस्टैम्प नहीं है।
पायथन का CSV लेखक हस्ताक्षर और उद्धृत फ़ील्डों को संभालता है। सहायक निर्यातित पाठ में सामान्य स्प्रेडशीट फ़ॉर्मूला मार्करों को भी उपसर्ग करता है। JSON को मूल रिकॉर्ड के रूप में सुरक्षित रखें, क्योंकि CSV एक परिवर्तित दृश्य है जिसका उद्देश्य निरीक्षण करना है। स्प्रेडशीट में बाहरी स्रोत के मान खोलने से पहले पाठ-आ_import सेटिंग्स की समीक्षा करें।
उदाहरण केवल q, gl, और hl को इसके इनपुट से निर्यात करता है। यदि आप एक स्थान, डोमेन, या पृष्ठांकन ऑफसेट जोड़ते हैं, तो उन आयामों को बनाए रखने के लिए CSV स्तंभों का विस्तार करें। सुरक्षित JSON पहले से ही पूर्ण इनपुट ऑब्जेक्ट को समेटे हुए है।
रिपोर्ट बनाने से पहले प्रतिक्रिया की व्याख्या करें
एक HTTP 200 प्रतिक्रिया में कार्य डेटा होता है, जबकि HTTP 201 प्रसंस्करण को इंगित करता है और एक taskId प्रदान करता है। एक लंबित कार्य को खाली-परिणाम अवलोकन उत्पन्न नहीं करना चाहिए। इस मामले में स्क्रिप्ट अपने JSON रिकॉर्ड को बनाए रखती है और CSV निर्यात को छोड़ देती है।
सफल डेटा प्रतिक्रियाओं के लिए, खाली एरे को अनुपस्थित या अनुपयोगी organic_results फ़ील्ड से भिन्न करें। अन्य मॉड्यूल अभी भी उपस्थित हो सकते हैं। जब कोई उपयोगी एरे मौजूद नहीं होती है, तो स्क्रिप्ट प्रतिक्रिया को बनाए रखती है और आपसे इसे निरीक्षण करने के लिए कहती है।
position को उस लौटाए गए परिणाम के लिए प्रदान की गई स्थिति के रूप में पढ़ें। वैश्विक रैंक में पृष्ठों को मिलाने से पहले, यह सत्यापित करें कि आपके अनुरोधों के लिए एंडपॉइंट संख्या कैसे स्थान की पहचान करता है। start परिणाम ऑफसेट को नियंत्रित करता है, और पृष्ठांकन जानकारी भविष्य के अनुरोधों का मार्गदर्शन कर सकती है; न तो यह स्थापित करता है कि हर Google परिणाम को पुनर्प्राप्त किया जा सकता है।
संरचित खोज डेटा का उपयोग करें
संरचित खोज परिणाम आपके अनुप्रयोग के चारों ओर API के लिए कार्यक्षेत्र प्रदान करते हैं। उपयोगी इकाई एक परिणाम है इसके अनुरोध संदर्भ और अवलोकन समय के साथ।
- SEO स्नैपशॉट: एक निश्चित कीवर्ड सूची के लिए अवलोकन सहेजें, फिर समय के साथ मेल खाने वाले संदर्भों की तुलना करें। अनुसूचीकरण, भंडारण, और परिवर्तन पता लगाना आपके पाइपलाइन का हिस्सा हैं।
- ब्रांड और प्रतिस्पर्धात्मक अनुसंधान: समीक्षा करें कि आपके चयनित प्रश्नों के लिए कौन से डोमेन और पृष्ठ शीर्षक आते हैं। उदाहरण उन खोजों का वर्णन करता है, न कि सभी वेब उल्लेखों या साइट के ट्रैफ़िक का।
- AI स्रोत खोज: उम्मीदवार शीर्षक, लिंक, और स्क्रिप्ट को स्रोत-चयन चरण में पारित करें। आप सबूतों की आवश्यकता होने पर अलग से पूर्ण पृष्ठ प्राप्त करें, और यह जांचें कि उत्पन्न दावे उनके स्रोतों से मेल खाते हैं।
एक सामग्री टीम के लिए, पहला उत्पादन एक संक्षिप्त पठन सूची हो सकती है जिसमें प्रश्न और बाजार संलग्न हो। एक डेवलपर के लिए, यह एक पुनरावृत्त निर्यात हो सकता है जिसका उपयोग एक मौजूदा रिपोर्ट द्वारा किया जाता है। दोनों एक डेटा रिकॉर्ड के साथ शुरू होते हैं जो इसके दायरे को स्पष्ट करता है।
इन उदाहरणों का उपयोग उस सार्वजनिक जानकारी के लिए करें जिसे आप एकत्रित करने और उपयोग करने की अनुमति रखते हैं। कार्य के लिए आवश्यक क्षेत्रों को बनाए रखें, क्रेडेंशियल्स की रक्षा करें, और डाउनस्ट्रीम पुन: उपयोग के लिए लागू शर्तों की समीक्षा करें।
निष्कर्ष
Google खोज API एक अनुप्रयोग को काम करने के लिए संरचित खोज डेटा प्रदान करता है। एक उपयोगी एकीकरण इनपुट को बनाए रखता है, कार्य स्थिति की जांच करता है, और स्रोत खोज को बाद की विश्लेषण से अलग करता है। एक एकल प्रश्न के साथ शुरू करें और कार्यप्रवाह का विस्तार करने से पहले सुरक्षित JSON का निरीक्षण करें।
अपडेट किया गया Google खोज API अनुरोध कार्यप्रवाह इस उदाहरण को आपके अपने प्रोजेक्ट में अनुकूलित करने के लिए कनेक्शन विवरण प्रदान करता है।
एफएक्यू
प्रश्न: क्या यह Google द्वारा प्रदान किया गया एक API है?
यह लेख Scrapeless Google Search API का वर्णन करता है, जो Google खोज डेटा प्राप्त करने के लिए एक Scrapeless सेवा है। यह एक आधिकारिक Google साझेदारी का दावा नहीं करता है।
प्रश्न: क्या आपको एक ब्राउज़र या प्रॉक्सी प्रबंधित करने की आवश्यकता है?
प्रबंधित API सेवा पक्ष पर संग्रह अवसंरचना को संभालती है। आपका क्लाइंट HTTP अनुरोध भेजता है और लौटाए गए डेटा को प्रोसेस करता है।
प्रश्न: क्या API में ऐतिहासिक रैंकिंग डेटा शामिल हैं?
यहाँ वर्णित कार्यप्रवाह आपके स्वयं के अवलोकनों को सहेजकर इतिहास बनाता है। यह किसी पूर्व-निर्धारित रैंकिंग इतिहास को पुनः प्राप्त नहीं करता है।
Q: क्या वही API चित्रों के लिए खोज कर सकता है?
उत्पाद Google छवि खोजों का समर्थन करता है, जिसमें tbm=isch पैरामीटर संदर्भ में पहचाना गया है। छवि प्रतिक्रिया को अलग से निरीक्षण करें; इस लेख का CSV मैपिंग ऑर्गैनिक वेब परिणामों के लिए है।
Q: क्या एक खोज स्निप्पेट में पूरा पृष्ठ होता है?
एक स्निप्पेट एक खोज परिणाम के साथ जुड़ा एक अंश है। एक कार्यप्रवाह जिसे पृष्ठ के पूरे प्रमाण की आवश्यकता है, को गंतव्य सामग्री को अलग से प्राप्त और समीक्षा करनी चाहिए।
Q: जब अनुरोध HTTP 201 लौटाए तो क्या होना चाहिए?
taskId को सुरक्षित रखें और कार्य को लंबित के रूप में मानें। इसे समाप्त खोज डेटा के रूप में प्रोसेस करने से पहले दस्तावेज़ित कार्य-परिणाम कार्यप्रवाह को पूरा करें।
स्क्रैपलेस में, हम केवल सार्वजनिक रूप से उपलब्ध डेटा का उपयोग करते हैं, जबकि लागू कानूनों, विनियमों और वेबसाइट गोपनीयता नीतियों का सख्ती से अनुपालन करते हैं। इस ब्लॉग में सामग्री केवल प्रदर्शन उद्देश्यों के लिए है और इसमें कोई अवैध या उल्लंघन करने वाली गतिविधियों को शामिल नहीं किया गया है। हम इस ब्लॉग या तृतीय-पक्ष लिंक से जानकारी के उपयोग के लिए सभी देयता को कोई गारंटी नहीं देते हैं और सभी देयता का खुलासा करते हैं। किसी भी स्क्रैपिंग गतिविधियों में संलग्न होने से पहले, अपने कानूनी सलाहकार से परामर्श करें और लक्ष्य वेबसाइट की सेवा की शर्तों की समीक्षा करें या आवश्यक अनुमतियाँ प्राप्त करें।



