वेब एनालिटिक्स ई-कॉमर्स साइट के लिए डिजाइनिंग डैशबोर्ड। भाग 3: एसईओ चैनल

इस लेख में, हम एसईओ ट्रैफ़िक एनालिटिक्स के लिए एक डैशबोर्ड एकत्र करेंगे। हम अजगर लिपियों और .csv फ़ाइलों के माध्यम से डेटा को अनलोड करेंगे।

हम क्या उतारेंगे?


खोज वाक्यांशों की स्थिति की गतिशीलता का विश्लेषण करने के लिए, आपको Yandex.Webmaster और Google खोज कंसोल से अनलोड करना होगा। खोज वाक्यांश की स्थिति को पंप करने की "उपयोगिता" का आकलन करने के लिए, आवृत्ति डेटा उपयोगी होगा। उन्हें Yandex.Direct और Google Ads से प्राप्त किया जा सकता है। खैर, साइट के तकनीकी पक्ष के व्यवहार का विश्लेषण करने के लिए, हम पेज स्पीड इनसाइडर का उपयोग करेंगे।


एसईओ यातायात गतिशीलता

Google सर्च कंसोल


एपीआई के साथ बातचीत करने के लिए, हम सर्चकॉन कंसोल लाइब्रेरी का उपयोग करेंगे। Github विस्तार से वर्णन करता है कि लॉगिन के लिए आवश्यक टोकन कैसे प्राप्त करें। डेटा अपलोड करने और उसे MS SQL डेटाबेस में लोड करने की प्रक्रिया इस प्रकार होगी:

def google_reports(): #     account = searchconsole.authenticate(client_config=r'credentials.json' , credentials=r'cred_result.json') webproperty = account['https://test.com/'] #        , ,      report = webproperty.query.range('today', days=-10).dimension('country', 'device', 'page', 'query').get() now = datetime.now() fr = now - timedelta(days = 9) to = now - timedelta(days = 3) res = pd.DataFrame(columns=['dt_from', 'dt_to', 'country', 'device', 'page', 'query', 'clicks', 'impressions', 'position']) #    DataFrame      for i in report.rows: temp={} temp['country'] = i[0] temp['device'] = i[1] temp['page'] = i[2] temp['query'] = i[3] temp['clicks'] = i[4] temp['impressions'] = i[5] temp['position'] = i[7] temp['dt_from'] = fr.strftime("%Y-%m-%d") temp['dt_to'] = to.strftime("%Y-%m-%d") res = res.append(temp, ignore_index=True) to_sql_server(res, 'google_positions') 

Yandex.Webmaster


दुर्भाग्य से, वेबमास्टर केवल 500 खोज वाक्यांश अपलोड कर सकता है। देश, उपकरण प्रकार, आदि द्वारा कट अपलोड करें। वह भी नहीं कर सकता। इन प्रतिबंधों के कारण, वेबमास्टर से 500 शब्दों के लिए पदों को अपलोड करने के अलावा, हम Yandex.Metrica से लैंडिंग पृष्ठों पर डेटा अपलोड करेंगे। उन लोगों के लिए जिनके पास कई खोज वाक्यांश नहीं हैं, 500 शब्द पर्याप्त होंगे। यदि यैंडेक्स के अनुसार आपका सिमेंटिक कोर पर्याप्त चौड़ा है, तो आपको अन्य स्रोतों से पदों को अनलोड करना होगा या अपनी स्थिति पार्सर लिखना होगा।

 def yandex_reports(): token = "..." #  UserID url = "https://api.webmaster.yandex.net/v4/user/" headers = {"Authorization": "OAuth " + token} res = requests.get(url, headers=headers) a = json.loads(res.text) userId = a['user_id'] host_id = "https:test.com:443" #  500        res = requests.get(url+str(userId)+"/hosts/"+host_id+"/search-queries/popular/?order_by=TOTAL_SHOWS&query_indicator=TOTAL_SHOWS", headers=headers) df1 = pd.DataFrame(columns=['query_id', 'query_text', 'shows', 'dt_from', 'dt_to']) a = json.loads(res.text) for i in a['queries']: temp={} temp['query_id'] = i['query_id'] temp['query_text'] = i['query_text'] temp['shows'] = i['indicators']['TOTAL_SHOWS'] temp['query_text'] = i['query_text'] temp['dt_from'] = a['date_from'] temp['dt_to'] = a['date_to'] df1 = df1.append(temp, ignore_index=True) #  500        res = requests.get(url+str(userId)+"/hosts/"+host_id+"/search-queries/popular/?order_by=TOTAL_SHOWS&query_indicator=TOTAL_CLICKS", headers=headers) df2 = pd.DataFrame(columns=['query_id', 'clicks']) a = json.loads(res.text) for i in a['queries']: temp={} temp['query_id'] = i['query_id'] temp['clicks'] = i['indicators']['TOTAL_CLICKS'] df2 = df2.append(temp, ignore_index=True) #  500        res = requests.get(url+str(userId)+"/hosts/"+host_id+"/search-queries/popular/?order_by=TOTAL_SHOWS&query_indicator=AVG_SHOW_POSITION", headers=headers) df3 = pd.DataFrame(columns=['query_id', 'position']) a = json.loads(res.text) for i in a['queries']: temp={} temp['query_id'] = i['query_id'] temp['position'] = i['indicators']['AVG_SHOW_POSITION'] df3 = df3.append(temp, ignore_index=True) df1 = df1.merge(df2, on='query_id') df1 = df1.merge(df3, on='query_id') to_sql_server(df1, 'yandex_positions') 

पेज स्पीड इनसाइडर


आपको साइट सामग्री की डाउनलोड गति का मूल्यांकन करने की अनुमति देता है। यदि साइट धीरे-धीरे लोड करना शुरू कर देती है, तो यह खोज परिणामों में साइट की स्थिति को काफी कम कर सकता है।

 #  -50      conn = pymssql.connect(host=host,user=user,password=password) sql_string = r''' ;with a as( select distinct page, sum(clicks) as clicks from seo_google_positions group by page ) select top 50 page from a order by clicks desc ''' data = pd.read_sql(sql_string, conn) conn.close() #        dat = pd.DataFrame(columns=['first_cpu_idle', 'first_contentful_paint', 'page', 'dt']) for i, j in data.iterrows(): url = "https://www.googleapis.com/pagespeedonline/v5/runPagespeed?url={0}&category=performance&strategy=desktop".format(j[0]) res = requests.get(url) res = json.loads(res.text) temp = {} temp['first_cpu_idle'] = res['lighthouseResult']['audits']['first-cpu-idle']['displayValue'] temp['first_contentful_paint'] = res['lighthouseResult']['audits']['first-contentful-paint']['displayValue'] temp['page'] = j[0] temp['dt'] = now.strftime("%Y-%m-%d") dat = dat.append(temp, ignore_index = True) to_sql_server(dat, 'google_pagespeed') 

Google विज्ञापन और यांडेक्स डायरेक्ट


खोज क्वेरी की आवृत्ति का अनुमान लगाने के लिए, हम अपने एसईओ कोर की आवृत्ति को अनलोड करते हैं।


Yandex बजट पूर्वानुमान


Google कीवर्ड प्लानर

यैंडेक्स मैट्रिक


एसईओ ट्रैफ़िक से लॉगिन पृष्ठों पर विचारों और विज़िट पर डेटा अपलोड करें।

 token = token headers = {"Authorization": "OAuth " + token} now = datetime.now() fr = (now - timedelta(days = 9)).strftime("%Y-%m-%d") to = (now - timedelta(days = 3)).strftime("%Y-%m-%d") res = requests.get("https://api-metrika.yandex.net/stat/v1/data/?ids=ids&metrics=ym:s:pageviews,ym:s:visits&dimensions=ym:s:startURL,ym:s:lastsignSearchEngine,ym:s:regionCountry,ym:s:deviceCategory&date1={0}&date2={1}&group=all&filters=ym:s:lastsignTrafficSource=='organic'&limit=50000".format(fr,to), headers=headers) a = json.loads(res.text) re = pd.DataFrame(columns=['page', 'device', 'view', 'dt_from', 'dt_to', 'engine', 'visits', 'country', 'pageviews']) for i in a['data']: temp={} temp['page'] = i['dimensions'][0]['name'] temp['engine'] = i['dimensions'][1]['name'] temp['country'] = i['dimensions'][2]['name'] temp['device'] = i['dimensions'][3]['name'] temp['view'] = i['metrics'][0] temp['visits'] = i['metrics'][1] temp['pageviews'] = i['metrics'][0] temp['dt_from'] = fr temp['dt_to'] = to re=re.append(temp, ignore_index=True) to_sql_server(re, 'yandex_pages') 

पावर बाय में डेटा अधिग्रहण


आइए देखें कि हम क्या उतारने में कामयाब रहे:

  • google_positions और yandex_positions
  • google_frequency और yandex_frequency
  • google_speed और yandex_speed
  • yandex_metrika

इस डेटा से हम सप्ताह के अनुसार, खंडों द्वारा सामान्य डेटा, खंडों और अनुरोधों द्वारा सामान्य डेटा, पेजों और लोडिंग सामग्री की गति से सामान्य डेटा प्राप्त करने में सक्षम होंगे। यह वही है जो अंतिम रिपोर्ट की तरह लग सकता है:



एक तरफ, बहुत सारे अलग-अलग संकेत हैं और यह समझना मुश्किल है कि सामान्य रुझान क्या हैं। दूसरी ओर, प्रत्येक प्लेट पदों, इंप्रेशन, क्लिक, CTR, पृष्ठ लोडिंग गति पर महत्वपूर्ण डेटा प्रदर्शित करती है।

चक्र से लेख:

Source: https://habr.com/ru/post/hi467019/


All Articles