Google ट्रेंड्स के साथ पायथन: रुचि और ट्रेंडिंग विषय इकट्ठा करना
Senior Web Scraping Engineer
TL;DR:
- गूगल ट्रेंड्स में रुचि एक मानकीकृत सूचकांक है, खोज गणना नहीं। प्रत्येक अवलोकन की व्याख्या करने के लिए आवश्यक भूगोल और समय सीमा को बनाए रखें।
- ट्रेंडिंग नाउ आरएसएस और ऐतिहासिक रुचि अलग-अलग प्रश्नों के उत्तर देते हैं। सार्वजनिक फीड वर्तमान विषयों को प्रदान करती है; यह एक रुचि-समय श्रृंखला के विकल्प के रूप में नहीं है।
- स्क्रेपलेस एक समर्पित
google_trendsटूल को उजागर करता है। प्रश्न और डेटा प्रकार चुनने से पहले स्थापित टूल स्कीमा का पता करें। - ट्रैफिक बकेट को टेक्स्ट ही रहना चाहिए। एक लेबल जैसे एक थ्रेशोल्ड को डैशबोर्ड में सटीक गणना नहीं बननी चाहिए।
- शुरू करने के लिए स्वतंत्र। नए स्क्रेपलेस खाते फ्री स्क्रेपिंग ब्राउज़र रनटाइम शामिल करते हैं — app.scrapeless.com पर साइन अप करें।
परिचय: तय करें कि आपको कौन सा ट्रेंड्स प्रश्न का उत्तर देना है
गूगल ट्रेंड्स आपको सापेक्ष खोज रुचि और वर्तमान ध्यान आकर्षित करने वाले विषयों के बारे में बता सकता है। ये अलग-अलग डेटा उत्पाद हैं। एक कीवर्ड की रुचि की तुलना करने वाली रिपोर्ट आज के ट्रेंडिंग विषयों की सूची का विकल्प नहीं हो सकती, भले ही दोनों में समान वाक्यांश हो।
एक पायथन संग्रह वर्कफ़्लो को पहले सतह का चयन करना चाहिए, फिर उसकी सेटिंग्स को बनाए रखना चाहिए। यह मार्गदर्शिका रुचि डेटा के लिए एक समर्पित ट्रेंड्स टूल को जोड़ती है और वर्तमान विषयों के लिए एक अलग सार्वजनिक आरएसएस वर्कफ़्लो चलाती है। यह आउटपुट सीमाओं को स्पष्ट रखती है बजाय इसके कि असंगत मैट्रिक्स को एक कॉलम में मजबूर किया जाए।
यदि आपका ऐप पहले से ही संरचित अभिनेता वर्कफ़्लो का उपयोग कर रहा है, तो ट्रेंड्स को इसके अपने अभिनेता/टूल अनुबंध के रूप में मानें। गूगल सर्च एपीआई सर्च परिणाम और गूगल ट्रेंड्स की रुचि अलग-अलग डेटा सेट हैं।
गूगल ट्रेंड्स वास्तव में क्या मापता है?
गूगल ट्रेंड्स समय के साथ रुचि के मूल्य चयनित भूगोल और अवधि के भीतर सापेक्ष खोज रुचि को परिभाषित करते हैं। यह श्रृंखला 0 से 100 तक स्केल की गई है, और कम-वॉल्यूम शब्द बिना यह दर्शाए कि किसी ने उन्हें खोजा नहीं, शून्य के रूप में प्रकट हो सकते हैं।
गूगल ट्रेंड्स मानकीकरण और सैंपलिंग बताता है कि एक बिंदु चुनी गई परिस्थितियों के भीतर खोजों के भाग पर क्यों निर्भर करता है। 100 का एक पीक उस श्रृंखला में सापेक्ष अधिकतम को पहचानता है, न कि खोजों की ज्ञात संख्या।
तारीख की सीमा बदलने से तुलना का आधार बदलता है। एक महीने के अनुरोध से एक मूल्य स्वाभाविक रूप से लंबे अनुरोध में उसी तारीख के लिए comparable नहीं होता है। सैंपल डेटा और कम-वॉल्यूम दमन भी उन निष्कर्षों को सीमित करते हैं जो आप निकाल सकते हैं।
| सतह | उपयुक्त प्रश्न | परिणाम के साथ रखें |
|---|---|---|
| समय के साथ रुचि | सापेक्ष रुचि कैसे बदली? | क्वेरी, भूगोल, तारीखें, श्रेणी और समय क्षेत्र |
| उपक्षेत्र द्वारा रुचि | सापेक्ष रुचि कहाँ केंद्रित है? | भूगोलिक दायरा और मानकीकरण संदर्भ |
| संबंधित प्रश्न/विषय | कौन सी खोजें या विषय जुड़े हुए हैं? | डेटा प्रकार और वापस किए गए रैंकिंग/मैट्रिक का अर्थ |
| ट्रेंडिंग नाउ आरएसएस | कौन से विषय अब ट्रेंड कर रहे हैं? | फीड भूगोल, प्रकाशन पाठ और अवलोकन समय |
समर्पित स्क्रेपलेस ट्रेंड्स टूल का उपयोग क्यों करें?
समर्पित google_trends टूल ट्रेंड्स-विशिष्ट क्वेरी पैरामीटर को उजागर करता है न कि सामान्य खोज-परिणाम पैरामीटर। यह स्क्रेपलेस एमसीपी कनेक्शन के माध्यम से उपलब्ध है और व्यापक स्क्रेपिंग एपीआई सतह का हिस्सा है।
स्थानीय रूप से खोजी गई स्कीमा में q, data_type, date, geo, hl, tz और cat शामिल हैं। data_type के उदाहरण हैं interest_over_time, interest_by_subregion, related_queries और related_topics। रिपोर्ट की आवश्यकता वाले प्रकार का चयन करें इससे पहले कि आप फ़ील्ड को स्टोरेज में मैप करें।
एक प्रबंधित टूल गूगल के मैट्रिक्स के अर्थ को नहीं बदलता है। आउटपुट को अभी भी भूगोल, सैंपलिंग संदर्भ और गायब डेटा और शून्य मानों के बीच भेद की आवश्यकता होती है। वर्तमान योजना शर्तों के लिए स्क्रेपलेस मूल्य निर्धारण की जांच करें; इस ट्यूटोरियल में कोई लागत या ताजगी बेंचमार्क नहीं है।
पूर्वापेक्षाएँ और पैकेज सेटअप
पायथन 3.12, नोड.जेएस, एमसीपी 2.2.0, रीक्वेस्ट 2.34.2 और scrapeless-mcp-server 0.6.3 का उपयोग करें। आरएसएस पथ को केवल रीक्वेस्ट और पायथन के XML/CSV पुस्तकालयों की आवश्यकता होती है। रुचि-डेटा कैप्चर के लिए अतिरिक्त रूप से एक वास्तविक SCRAPELESS_KEY टूल पहुंच के साथ आवश्यक है।
प्रमाणित ट्रेंड्स संग्रह उस प्रमाणपत्र के बिना लाइव सत्यापन के लिए लंबित है। स्थानीय टूल की खोज और सार्वजनिक आरएसएस पथ स्वतंत्र रूप से चलते हैं; इनमें से कोई भी पूरी तरह से प्रमाणित रुचि-शृंखला कैप्चर के रूप में वर्णित नहीं है।
डिस्पोजेबल प्रोजेक्ट में पिन किए गए क्लाइंट्स और सर्वर को स्थापित करें:
bash
python -m pip install mcp==2.2.0 requests==2.34.2
pnpm add scrapeless-mcp-server@0.6.3
इकट्ठा करने से पहले रुचि-डेटा अनुबंध का पता लगाएं
साधन खोजने से क्लाइंट को अपने स्थापित MCP सर्वर द्वारा प्रदर्शित सटीक स्कीमा मिलती है। metadata-discovery-only का स्थानीय स्टार्टअप मान केवल स्कीमा जांच के लिए उपयोग किया जा सकता है; इसका उपयोग कभी भी दूरस्थ कैप्चर को लागू करने के लिए नहीं किया जाना चाहिए।
इस स्क्रिप्ट को trends_mcp.py के रूप में सहेजें। उस स्पष्ट खोज मान के साथ या अपने कॉन्फ़िगर किए गए असली कुंजी के साथ इसके डिफ़ॉल्ट मोड को चलाएँ। बूटस्ट्रैप गैर-प्रोटोकॉल कंसोल लॉगिंग को दबा देता है ताकि stdout stdio संदेशों के लिए उपयोगी बना रहे। पायथन क्लाइंट MCP 2.2.0 के input_schema और is_error गुणों का उपयोग करता है।
python
import argparse
import asyncio
import json
import os
from pathlib import Path
from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client
async def main(capture):
key = os.environ['SCRAPELESS_KEY']
server = StdioServerParameters(
command='node',
args=['--input-type=module', '-e',
'console.log = () => {}; await import(process.argv[1]);',
str(Path('node_modules/scrapeless-mcp-server/build/index.js').resolve())],
env={**os.environ, 'SCRAPELESS_KEY': key})
async with stdio_client(server) as streams:
async with ClientSession(*streams) as session:
await session.initialize()
listed = await session.list_tools()
tool = next(t for t in listed.tools if t.name == 'google_trends')
Path('trends-tool-schema.json').write_text(
json.dumps(tool.input_schema, indent=2))
print(json.dumps({'discovered_tools': len(listed.tools),
'selected_tool': tool.name}))
if capture:
if key == 'metadata-discovery-only':
raise ValueError('A real key is required for remote capture')
args = {'q': 'coffee', 'data_type': 'interest_over_time',
'date': 'today 12-m', 'geo': 'US',
'hl': 'en', 'tz': '0', 'cat': '0'}
result = await session.call_tool(tool.name, args)
Path('trends-result.json').write_text(json.dumps({
'request': args, 'result': result.model_dump(mode='json')
}, indent=2))
if result.is_error:
raise ValueError('Tool error; inspect saved result')
print('Raw result saved; inspect its actual fields before mapping a series.')
parser = argparse.ArgumentParser()
parser.add_argument('--capture', action='store_true')
asyncio.run(main(parser.parse_args().capture))
स्थानीय हैंडशेक ने 25 उपकरणों का पता लगाया और google_trends का चयन किया। यह संख्या स्थापित सर्वर का वर्णन करती है, न कि एक स्थायी प्लेटफ़ॉर्म सीमा। सहेजा गया trends-tool-schema.json यह जांचने के लिए सबूत है जब सर्वर पैकेज बदलता है।
एक असली कुंजी कॉन्फ़िगर करने के साथ, python trends_mcp.py --capture पिछले वर्ष के दौरान अमेरिका में कॉफी के लिए समय के साथ रुचि का अनुरोध करता है। नोट: कैप्चर शाखा में प्रमाणपत्रों की आवश्यकता होती है और यह प्रमाणीकरण के तहत वर्तमान सत्यापन का इंतज़ार करती है। स्क्रिप्ट MCP परिणाम लिफाफे को उसकी आंतरिक फ़ील्ड पर अनुमान लगाने से पहले संरक्षित करती है। यह एक समयरेखा कुंजी का आविष्कार नहीं करती या समय श्रृंखला को नहीं बनाती।
Scrapeless के साथ स्क्रैपिंग शुरू करें
Scrapeless के साथ अपने वेब स्क्रैपिंग और स्वचालन वर्कफ़्लो को शक्ति दें!
आज ही साइन अप करें और $5 का मुफ्त क्रेडिट प्राप्त करें — कोई क्रेडिट कार्ड आवश्यक नहीं।Scrapeless Dashboard में अभी अपना मुफ्त क्रेडिट प्राप्त करें।
सार्वजनिक RSS फीड से वर्तमान विषय इकट्ठा करें
Trending Now RSS एक सार्वजनिक वर्तमान-विषय फीड है जिसे ब्राउज़र या Scrapeless API प्रमाणपत्र के बिना इकट्ठा किया जा सकता है। इसके प्रकाशन समय और ट्रैफ़िक लेबल फीड के विषय अवलोकन का विवरण देते हैं, न कि ऐतिहासिक मानकीकृत रुचि।
निम्नलिखित पूर्ण स्क्रिप्ट एक फीड अनुरोध बनाती है और अधिकतम पांच आइटम संग्रहीत करती है। यह मूल XML, JSON रिकॉर्ड और CSV को एक अवलोकन निर्देशिका में सहेजती है। यह स्वतंत्र रूप से निष्पादन योग्य सार्वजनिक-डेटा पथ है।
python
import csv
import hashlib
import json
from datetime import datetime, timezone
from pathlib import Path
from xml.etree import ElementTree as ET
import requests
url = 'https://trends.google.com/trending/rss?geo=US'
response = requests.get(url, timeout=30)
response.raise_for_status()
root = ET.fromstring(response.content)
channel = root.find('channel')
if channel is None:
raise ValueError('Expected RSS channel, received another document')
observed = datetime.now(timezone.utc).strftime('%Y%m%dT%H%M%SZ')
folder = Path('trending-rss') / observed
folder.mkdir(parents=True, exist_ok=True)
(folder / 'source.xml').write_bytes(response.content)
ns = {'ht': 'https://trends.google.com/trending/rss'}
rows = []
for item in channel.findall('item')[:5]:
title = (item.findtext('title') or '').strip()
link = (item.findtext('link') or '').strip()
if not title or not link:
raise ValueError('RSS item missing title or link')
rows.append({'title': title, 'link': link,
'published': item.findtext('pubDate'),
'traffic_bucket': item.findtext('ht:approx_traffic', namespaces=ns),
'geo': 'US', 'observed_at': observed})
if not rows:
raise ValueError('No items; inspect source before treating this as valid empty data')
(folder / 'records.json').write_text(json.dumps(rows, ensure_ascii=False, indent=2))
with (folder / 'records.csv').open('w', newline='', encoding='utf-8') as out:
writer = csv.DictWriter(out, fieldnames=list(rows[0]))
writer.writeheader()
writer.writerows(rows)
print(json.dumps({'source': response.url, 'items_saved': len(rows),
'source_sha256': hashlib.sha256(response.content).hexdigest()}))
सार्वजनिक फीड रन ने पांच वास्तविक आइटम और उनके स्रोत हैश को सहेजा। विषय बदलते हैं, इसलिए लेख नामों को समझे गए सार्वभौमिक आउटपुट नमूने में नहीं रोकता। रिकॉर्ड फ़ील्ड हैं title, link, published, traffic_bucket, geo और observed_at।
ht नामस्थान फीड के वैकल्पिक ट्रैफ़िक फ़ील्ड की पहचान करता है। इसके मूल्य को लौटाए गए पाठ के रूप में रखें, जिसमें कोई भी थ्रेशोल्ड नोटेशन शामिल हो। एक गायब ट्रैफ़िक लेबल एक गायब फ़ील्ड है, न कि शून्य-खोज अनुमान। CSV लेखक CSV इंटरचेंज प्रारूप द्वारा वर्णित उद्धरण और रिकॉर्ड नियमों का पालन करता है, इसलिए विराम चिह्न वाले विषय शीर्षक बरकरार रहते हैं।
ट्रेंड्स डेटा संग्रहीत करते समय मैट्रिक पहचान बनाए रखें
एक ट्रेंड्स संग्रह तालिका को संग्रहण सतह के साथ-साथ डेटा को बनाए रखना चाहिए। RSS विषयों और रुचि-श्रृंखला बिंदुओं को अलग मैट्रिक नाम दें और अलग स्वीकृति नियम।
एक रुचि श्रृंखला के लिए, कच्चे परिणाम के साथ पूर्ण अनुरोध तर्कों को बनाए रखें। एक बार जब प्रमाणीकरण के बाद आउटपुट की जांच की गई हो, तो एक स्कीमा अडैप्टर जोड़ें जो बिंदु प्रकारों, प्रश्न लेबलों और रिपोर्ट किए गए अवधि की जांच करता है। HTTP या MCP विनिमय पूरा होने के कारण एक गायब श्रृंखला को एक खाली सफल चार्ट में परिवर्तित न करें।
RSS के लिए, मूल फीड बाइट्स, फीड भूगोल और अवलोकन निर्देशिका को बनाए रखें। प्रकाशन पाठ स्रोत-प्रदत्त है; अवलोकन समय तब होता है जब आपके क्लाइंट ने इसे इकट्ठा किया। ये विभिन्न घड़ियाँ हैं। स्रोत हैश प्रत्येक निर्यात को उस फीड से जोड़ता है जिसमें से इसे निकाला गया था, उत्पत्ति संबंधों का व्यावहारिक उपयोग।
एक डैशबोर्ड को चार्ट के बगल में चयनित दिनांक सीमा दिखानी चाहिए। उस सीमा को बिंदुओं के साथ निर्यात करें बजाय इसे केवल UI फ़िल्टर में रखने के। अन्यथा, एक स्प्रेडशीट प्राप्तकर्ता एक मानकीकृत पीक को एक मात्रा सांख्यिकी के रूप में व्याख्या कर सकता है जो डेटा ने कभी प्रदान नहीं की।
सामान्य व्याख्या गलतियाँ
एक सफल संग्रह अभी भी एक गलत विश्लेषण उत्पन्न कर सकता है यदि मैट्रिक को गलत लेबल किया गया हो। निम्नलिखित जांचें उस बिंदु पर आती हैं जहां एकत्रित डेटा एक रिपोर्ट बनता है।
| गलती | सही हैंडलिंग |
|---|---|
| रुचि 100 को 100 खोजों के रूप में मानना | फ़ील्ड को मानकीकृत रुचि के रूप में लेबल करें |
| स्वतंत्र रूप से पैमाइश की गई दिनांक सीमाओं की तुलना करना | अनुरोधों को संरेखित रखें या अलग आधार का खुलासा करें |
| एक RSS ट्रैफ़िक बकेट को सटीक संख्या के रूप में मानना | मूल थ्रेशोल्ड पाठ को बनाए रखें |
| गायब मानों को शून्य में बदलना | गायब-राज्य अर्थशास्त्र को बनाए रखें और स्रोत की जांच करें |
| विश्वव्यापी और देश अनुरोधों को मिलाना | रिकॉर्ड को स्पष्ट भूगोल द्वारा समूहबद्ध करें |
| ट्रेंड्स इतिहास के लिए सामान्य खोज को कॉल करना | समर्पित ट्रेंड्स अनुबंध का उपयोग करें |
निष्कर्ष: प्रश्न को मेट्रिक के साथ संग्रहीत करें
Python के साथ Google Trends तब सबसे उपयोगी होता है जब संग्रह पथ उस प्रश्न से मेल खाता है जो पूछा जा रहा है। ऐतिहासिक रुचि एक Trends-विशिष्ट अनुबंध से संबंधित होती है; वर्तमान-विशय संग्रह का एक सरल सार्वजनिक RSS पथ होता है।
सबूत के प्रबंधन को स्थापित करने के लिए RSS निर्यात के साथ शुरू करें, फिर इसके एडाप्टर को बनाने से पहले पहले प्रमाणित रुचि के परिणाम की जांच करें। हर नीचे की चार्ट में भूगोल, तिथि सीमा और मेट्रिक की पहचान संलग्न रखें।
क्या आप अपने एआई-संचालित डेटा पाइपलाइन का निर्माण करने के लिए तैयार हैं?
हमारे समुदाय में जुड़ें ताकि मुफ्त योजना का दावा कर सकें और डेवलपर्स के साथ संबंध स्थापित कर सकें जो वेब-डेटा पाइपलाइन का निर्माण कर रहे हैं: Discord · Telegram।
app.scrapeless.com पर साइन अप करें कुछ मुफ्त स्क्रैपिंग ब्राउज़र रनटाइम के लिए और उपरोक्त पैटर्न को अपने स्वयं के सार्वजनिक-डेटा कार्यप्रवाह में अनुकूलित करें।
सामान्य प्रश्न
प्रश्न: क्या Google Trends सटीक खोज मात्रा की रिपोर्ट करता है?
नहीं। Google Trends की रुचि मूल्यात्मक माप हैं जो सापेक्ष रुचि के सामान्यीकृत माप हैं। इन्हें केवल इंडेक्स से सटीक खोज गणनाओं में परिवर्तित नहीं किया जा सकता।
प्रश्न: क्या Python बिना एपीआई कुंजी के Trending Now एकत्र कर सकता है?
हाँ। सार्वजनिक RSS उदाहरण वर्तमान विषयों को Requests और मानक-लाइब्रेरी अनुक्रमकों के साथ एकत्र करता है। यह ऐतिहासिक रुचि-ओवर-टाइम श्रृंखला को पुनः प्राप्त नहीं करता है।
प्रश्न: क्या Google सर्च एपीआई वही है जो Trends टूल है?
नहीं। सर्च-परिणाम संग्रह और Google Trends संग्रह के विभिन्न अनुरोध पैरामीटर और आउटपुट अर्थ होते हैं। यहाँ दिखाए गए Trends-विशिष्ट कार्यप्रवाह के लिए google_trends का उपयोग करें।
प्रश्न: क्या सार्वजनिक Google Trends डेटा एकत्र करना कानूनी है?
स्वीकृत दायरा शर्तों, पहुंच की स्थितियों, उपयोग अधिकारों और अधिकार क्षेत्र पर निर्भर करता है। उद्देश्यपूर्ण संग्रह और पुनः उपयोग के लिए उन बाधाओं की समीक्षा करें; एक सार्वजनिक फीड हर आवेदन के लिए अनियंत्रित अनुमति नहीं है।
प्रश्न: क्या RSS कार्यप्रवाह को प्रॉक्सी या ब्राउज़र की आवश्यकता है?
इस RSS उदाहरण द्वारा कोई प्रॉक्सी या ब्राउज़र का उपयोग नहीं किया जाता है। यदि प्रतिक्रिया अपेक्षित RSS दस्तावेज़ नहीं है, तो निर्यात रोकें और एक विषय डेटा के रूप में चुनौती पृष्ठ स्वीकार करने के बजाय कब्जा की गई प्रतिक्रिया की जांच करें।
प्रश्न: क्या Trends के मान संग्रहों के बीच भिन्न हो सकते हैं?
हाँ। सैंपलिंग, क्वेरी व्याख्या, भूगोल और समय-सीमा के विकल्प श्रृंखला को प्रभावित करते हैं। उन विकल्पों को रिकॉर्ड करें ताकि भिन्नता को जांचा जा सके न कि स्वचालित रूप से मांग परिवर्तन के रूप में माना जाए।
प्रश्न: क्या यह कार्यप्रवाह बिना एआई एजेंट के चल सकता है?
हाँ। सीधे Python MCP क्लाइंट और RSS पार्सर दोनों सामान्य स्क्रिप्ट हैं। एआई एजेंट वैकल्पिक है; यह गायब API क्रेडेंशियल प्रदान नहीं करता है या मेट्रिक मान्यता को प्रतिस्थापित नहीं करता।
स्क्रैपलेस में, हम केवल सार्वजनिक रूप से उपलब्ध डेटा का उपयोग करते हैं, जबकि लागू कानूनों, विनियमों और वेबसाइट गोपनीयता नीतियों का सख्ती से अनुपालन करते हैं। इस ब्लॉग में सामग्री केवल प्रदर्शन उद्देश्यों के लिए है और इसमें कोई अवैध या उल्लंघन करने वाली गतिविधियों को शामिल नहीं किया गया है। हम इस ब्लॉग या तृतीय-पक्ष लिंक से जानकारी के उपयोग के लिए सभी देयता को कोई गारंटी नहीं देते हैं और सभी देयता का खुलासा करते हैं। किसी भी स्क्रैपिंग गतिविधियों में संलग्न होने से पहले, अपने कानूनी सलाहकार से परामर्श करें और लक्ष्य वेबसाइट की सेवा की शर्तों की समीक्षा करें या आवश्यक अनुमतियाँ प्राप्त करें।



