الأخبار التكنولوجية والاستعراضات والنصائح!

كيفية تصور وتخصيص تحليل الروابط الخلفية باستخدام بايثون

ستساعدك المقالة التالية: كيفية تصور وتخصيص تحليل الروابط الخلفية باستخدام بايثون

من المحتمل أنك استخدمت إحدى الأدوات الأكثر شيوعًا مثل Ahrefs أو Semrush لتحليل الروابط الخلفية لموقعك.

تقوم هذه الأدوات بالبحث في الويب للحصول على قائمة بالمواقع المرتبطة بموقعك على الويب مع تصنيف المجال وبيانات أخرى تصف جودة الروابط الخلفية الخاصة بك.

ليس سرًا أن الروابط الخلفية تلعب دورًا كبيرًا في خوارزمية Google، لذا فمن المنطقي على الأقل فهم موقعك قبل مقارنته بالمنافسة.

بينما يمنحك استخدام الأدوات نظرة ثاقبة لمقاييس محددة، فإن تعلم تحليل الروابط الخلفية بنفسك يمنحك مرونة أكبر فيما تقيسه وكيفية تقديمه.

وعلى الرغم من أنه يمكنك إجراء معظم التحليلات على جدول بيانات، إلا أن بايثون تتمتع بمزايا معينة.

بخلاف العدد الهائل من الصفوف التي يمكنه التعامل معها، يمكنه أيضًا النظر بسهولة أكبر إلى الجانب الإحصائي، مثل التوزيعات.

ستجد في هذا العمود إرشادات خطوة بخطوة حول كيفية تصور تحليل الروابط الخلفية الأساسي وتخصيص تقاريرك من خلال النظر في سمات الروابط المختلفة باستخدام Python.

عدم شغل مقعد

سنختار موقعًا إلكترونيًا صغيرًا من قطاع الأثاث في المملكة المتحدة كمثال ونستعرض بعض التحليلات الأساسية باستخدام لغة Python.

إذن ما هي قيمة الروابط الخلفية للموقع بالنسبة لـ SEO؟

في أبسط حالاتها، أود أن أقول الجودة والكمية.

تعتبر الجودة أمرًا شخصيًا بالنسبة للخبير ولكنها محددة بالنسبة لشركة Google عن طريق مقاييس مثل السلطة وملاءمة المحتوى.

سنبدأ بتقييم جودة الارتباط بالبيانات المتاحة قبل تقييم الكمية.

حان الوقت للترميز.

استيراد إعادة استيراد الوقت استيراد الباندا الاستيراد العشوائي كـ pd استيراد numpy كـ np استيراد datetime من datetime استيراد timedelta منplotnine استيراد * استيراد matplotlib.pyplot كـ plt من pandas.api.types استيراد is_string_dtype من pandas.api.types استيراد is_numeric_dtype استيراد uritools pd. set_option(‘display.max_colwidth’, لا شيء) %matplotlib inline root_domain = ‘johnsankey.co.uk’ hostdomain = ‘www.johnsankey.co.uk’ hostname = “johnsankey” full_domain = ‘https://www.johnsankey.co .uk’ target_name = “جون سانكي”

نبدأ باستيراد البيانات وتنظيف أسماء الأعمدة لتسهيل التعامل معها والكتابة بشكل أسرع للمراحل اللاحقة.

target_ahrefs_raw = pd.read_csv( ‘data/johnsankey.co.uk-refdomains-subdomains__2022-03-18_15-15-47.csv’)

تعد عمليات استيعاب القائمة طريقة قوية وأقل كثافة لتنظيف أسماء الأعمدة.

target_ahrefs_raw.columns = [col.lower() for col in target_ahrefs_raw.columns]

يرشد فهم القائمة بايثون إلى تحويل اسم العمود إلى أحرف صغيرة لكل عمود (“عمود”) في أعمدة إطار البيانات.

target_ahrefs_raw.columns = [col.replace(‘ ‘,’_’) for col in target_ahrefs_raw.columns]
target_ahrefs_raw.columns = [col.replace(‘.’,’_’) for col in target_ahrefs_raw.columns]
target_ahrefs_raw.columns = [col.replace(‘__’,’_’) for col in target_ahrefs_raw.columns]
target_ahrefs_raw.columns = [col.replace(‘(‘,”) for col in target_ahrefs_raw.columns]
target_ahrefs_raw.columns = [col.replace(‘)’,”) for col in target_ahrefs_raw.columns]
target_ahrefs_raw.columns = [col.replace(‘%’,”) for col in target_ahrefs_raw.columns]

على الرغم من أن ذلك ليس ضروريًا تمامًا، إلا أنني أحب وجود عمود عدد كمعيار للتجميعات وعمود قيمة واحد “مشروع” إذا كنت بحاجة إلى تجميع الجدول بأكمله.

target_ahrefs_raw[‘rd_count’] = 1 target_ahrefs_raw[‘project’] = target_name target_ahrefs_raw

الآن لدينا إطار بيانات بأسماء أعمدة نظيفة.

الخطوة التالية هي تنظيف قيم الجدول الفعلية وجعلها أكثر فائدة للتحليل.

قم بعمل نسخة من إطار البيانات السابق وأعطه اسمًا جديدًا.

target_ahrefs_clean_dtypes = target_ahrefs_raw

قم بتنظيف عمود dofollow_ref_domains، الذي يخبرنا بعدد نطاقات المرجع التي يحتوي عليها رابط الموقع.

في هذه الحالة، سنقوم بتحويل الشرطات إلى أصفار ثم تحويل العمود بأكمله إلى عدد صحيح.

# الإشارة_للنطاقات target_ahrefs_clean_dtypes[‘dofollow_ref_domains’] = np.where(target_ahrefs_clean_dtypes[‘dofollow_ref_domains’] == ‘-‘, 0, target_ahrefs_clean_dtypes[‘dofollow_ref_domains’]) target_ahrefs_clean_dtypes[‘dofollow_ref_domains’] = target_ahrefs_clean_dtypes[‘dofollow_ref_domains’].astype(int) # Linked_domains target_ahrefs_clean_dtypes[‘dofollow_linked_domains’] = np.where(target_ahrefs_clean_dtypes[‘dofollow_linked_domains’] == ‘-‘, 0, target_ahrefs_clean_dtypes[‘dofollow_linked_domains’]) target_ahrefs_clean_dtypes[‘dofollow_linked_domains’] = target_ahrefs_clean_dtypes[‘dofollow_linked_domains’].استيب (كثافة العمليات)

يخبرنا First_seen بتاريخ العثور على الرابط لأول مرة.

سنقوم بتحويل السلسلة إلى تنسيق تاريخ يمكن لـ Python معالجته ثم نستخدمه لاشتقاق عمر الروابط لاحقًا.

# تمت المشاهدة لأول مرة target_ahrefs_clean_dtypes[‘first_seen’] = pd.to_datetime(target_ahrefs_clean_dtypes[‘first_seen’]، التنسيق = “%d/%m/%Y %H:%M”)

إن تحويل first_seen إلى تاريخ يعني أيضًا أنه يمكننا إجراء عمليات تجميع الوقت حسب الشهر والسنة.

يعد هذا مفيدًا لأنه ليس من المعتاد دائمًا الحصول على روابط لموقع ما يوميًا، على الرغم من أنه سيكون من الجيد لموقعي الخاص إذا حدث ذلك!

target_ahrefs_clean_dtypes[‘month_year’] = target_ahrefs_clean_dtypes[‘first_seen’].dt.to_period(‘M’)

يتم حساب عمر الارتباط عن طريق أخذ تاريخ اليوم وطرح تاريخ المشاهدة الأولى.

ثم يتم تحويله إلى تنسيق أرقام وتقسيمه على عدد كبير للحصول على عدد الأيام.

#عمر الرابط target_ahrefs_clean_dtypes[‘link_age’] = datetime.datetime.now() – target_ahrefs_clean_dtypes[‘first_seen’]
target_ahrefs_clean_dtypes[‘link_age’] = target_ahrefs_clean_dtypes[‘link_age’]
target_ahrefs_clean_dtypes[‘link_age’] = target_ahrefs_clean_dtypes[‘link_age’].astype(int) target_ahrefs_clean_dtypes[‘link_age’] = (target_ahrefs_clean_dtypes[‘link_age’]/(3600 * 24 * 1000000000)).round(0) target_ahrefs_clean_dtypes

مع تنظيف أنواع البيانات، وإنشاء بعض ميزات البيانات الجديدة، يمكن أن تبدأ المتعة!

جودة الوصلة

يقوم الجزء الأول من تحليلنا بتقييم جودة الارتباط، والذي يلخص إطار البيانات بأكمله باستخدام وظيفة الوصف للحصول على إحصائيات وصفية لجميع الأعمدة.

target_ahrefs_analogy = target_ahrefs_clean_dtypes target_ahrefs_analogy.describe()

لذلك من الجدول أعلاه، يمكننا أن نرى المتوسط ​​(المتوسط)، وعدد مجالات الإحالة (107)، والتباين (المئين الخامس والعشرون وما إلى ذلك).

متوسط ​​تقييم النطاق (أي ما يعادل سلطة مجال Moz) للنطاقات المرجعية هو 27.

هل هذا شيء جيد؟

وفي غياب بيانات المنافسين للمقارنة في هذا القطاع من السوق، فمن الصعب معرفة ذلك. هذا هو المكان الذي تأتي فيه تجربتك كممارس لتحسين محركات البحث.

ومع ذلك، أنا متأكد من أننا يمكن أن نتفق جميعا على أنه يمكن أن يكون أعلى.

ما مدى ارتفاع هذا التحول هو سؤال آخر.

يمكن أن يكون الجدول أعلاه جافًا بعض الشيء ويصعب تصوره، لذلك سنقوم برسم رسم بياني للحصول على فهم بديهي لسلطة المجال المرجعي.

dr_dist_plt = ( ggplot(target_ahrefs_analogy, aes(x = ‘dr’)) + Geom_histogram(alpha = 0.6, fill = “blue”, bins = 100) +scale_y_continious() + theme(legend_position = ‘right’)) dr_dist_plt S

التوزيع منحرف بشدة، مما يدل على أن معظم نطاقات الإحالة لديها تصنيف سلطة صفر.

وبعد الصفر، يبدو التوزيع موحدًا إلى حد ما، مع وجود عدد متساوٍ من المجالات عبر مستويات مختلفة من السلطة.

يعد عمر الارتباط عاملاً مهمًا آخر لتحسين محركات البحث.

دعونا نتحقق من التوزيع أدناه.

linkage_dist_plt = ( ggplot(target_ahrefs_ana Analysis, aes(x = ‘link_age’)) + Geom_histogram(alpha = 0.6, fill = blue, bins = 100) +scale_y_continious() + theme(legend_position = ‘right’)) linkage_dist_plt

يبدو التوزيع أكثر طبيعية حتى لو كان لا يزال منحرفًا حيث أن غالبية الروابط جديدة.

يبدو أن عمر الرابط الأكثر شيوعًا هو حوالي 200 يوم، أي أقل من عام، مما يشير إلى أن معظم الروابط تم الحصول عليها مؤخرًا.

ومن باب الاهتمام، دعونا نرى كيف يرتبط هذا بسلطة المجال.

dr_linkage_plt = ( ggplot(target_ahrefs_analogy, aes(x = ‘dr’, y = ‘link_age’)) + Geom_point(alpha = 0.4, color = “blue”, size = 2) + Geom_smooth(method = ‘lm’, se = خطأ، اللون = “أحمر”، الحجم = 3، ألفا = 0.4)) طباعة (target_ahrefs_analogy)[‘dr’].corr(target_ahrefs_analogy[‘link_age’])) dr_linkage_plt 0.1941101232345909

لا تظهر المؤامرة (مع الشكل 0.19 المطبوع أعلاه) أي علاقة بين الاثنين.

ولماذا يجب أن يكون هناك؟

الارتباط يعني فقط أن روابط السلطة العليا تم الحصول عليها في المرحلة المبكرة من تاريخ الموقع.

وسيصبح سبب عدم الارتباط أكثر وضوحا في وقت لاحق.

سننظر الآن إلى جودة الارتباط طوال الوقت.

إذا أردنا رسم عدد الروابط حسب التاريخ حرفيًا، فستبدو السلسلة الزمنية فوضوية إلى حد ما وأقل فائدة كما هو موضح أدناه (لم يتم توفير رمز لعرض المخطط).

ولتحقيق ذلك، سنقوم بحساب المتوسط ​​​​الجاري لتقييم النطاق حسب شهر السنة.

Note وظيفة التوسيع () التي تطلب من Pandas تضمين جميع الصفوف السابقة مع كل صف جديد.

target_rd_cummean_df = target_ahrefs_analogy target_rd_mean_df = target_rd_cummean_df.groupby([‘month_year’])[‘dr’].sum().reset_index() target_rd_mean_df[‘dr_runavg’] = target_rd_mean_df[‘dr’].expanding().mean() target_rd_mean_df

لدينا الآن جدول يمكننا استخدامه لتغذية الرسم البياني وتصوره.

dr_cummean_smooth_plt = ( ggplot(target_rd_mean_df, aes(x = ‘month_year’, y = ‘dr_runavg’, المجموعة = 1)) + Geom_line(alpha = 0.6, color=blue, size = 2) +scale_y_continious() +scale_x_date( ) + theme(legend_position = ‘right’, axis_text_x=element_text(rotation=90, hjust=1) )) dr_cummean_smooth_plt

يعد هذا أمرًا مثيرًا للاهتمام حيث يبدو أن الموقع بدأ في جذب روابط ذات سلطة عالية في بداية وقته (ربما كانت حملة علاقات عامة تطلق العمل).

ثم تلاشت لمدة أربع سنوات قبل أن تعود من جديد باكتساب رابط جديد لروابط ذات سلطة عالية مرة أخرى.

حجم الروابط

يبدو جيدًا مجرد كتابة هذا العنوان!

من منا لا يريد حجمًا كبيرًا من الروابط (الجيدة) لموقعه؟

الجودة شيء واحد؛ الحجم هو شيء آخر، وهو ما سنقوم بتحليله بعد ذلك.

كما هو الحال مع العملية السابقة، سنستخدم دالة التوسيع لحساب المجموع التراكمي للروابط التي تم الحصول عليها حتى الآن.

target_count_cumsum_df = تحليل target_ahrefs target_count_cumsum_df = target_count_cumsum_df.groupby([‘month_year’])[‘rd_count’].sum().reset_index() target_count_cumsum_df[‘count_runsum’] = target_count_cumsum_df[‘rd_count’].expanding().sum() target_count_cumsum_df

هذه هي البيانات، والآن الرسم البياني.

target_count_cumsum_plt = ( ggplot(target_count_cumsum_df, aes(x = ‘month_year’, y = ‘count_runsum’, المجموعة = 1)) + Geom_line(alpha = 0.6, color=blue, size = 2) +scale_y_continious() +scale_x_date( ) + theme(legend_position = ‘right’, axis_text_x=element_text(rotation=90, hjust=1) )) target_count_cumsum_plt

نرى أن الروابط التي تم الحصول عليها في بداية عام 2017 تباطأت ولكنها تمت إضافتها بشكل مطرد على مدى السنوات الأربع المقبلة قبل أن تتسارع مرة أخرى في مارس 2021 تقريبًا.

مرة أخرى، سيكون من الجيد ربط ذلك بالأداء.

أخذ المزيد من ذلك

وبطبيعة الحال، ما ورد أعلاه هو مجرد غيض من فيض، لأنه استكشاف بسيط لموقع واحد. من الصعب استنتاج أي شيء مفيد لتحسين التصنيف في مساحات البحث التنافسية.

وفيما يلي بعض المجالات لمزيد من استكشاف البيانات وتحليلها.

  • إضافة بيانات مشاركة وسائل التواصل الاجتماعي لكلا عنواني URL المقصودين.
  • ربط الرؤية الشاملة للموقع بمتوسط ​​التشغيل DR متأخر , بعد فوات الوقت.
  • رسم توزيع DR متأخر , بعد فوات الوقت.
  • إضافة بيانات حجم البحث على أسماء المضيفين لمعرفة عدد عمليات البحث عن العلامات التجارية التي تتلقاها النطاقات المرجعية كمقياس للسلطة الحقيقية.
  • الانضمام مع بيانات الزحف إلى عناوين URL المقصودة لاختبار مدى ملاءمة المحتوى.
  • سرعة الارتباط – معدل الحصول على روابط جديدة من المواقع الجديدة.
  • دمج جميع الأفكار المذكورة أعلاه في تحليلك للمقارنة مع منافسيك.

أنا متأكد من أن هناك الكثير من الأفكار غير المذكورة أعلاه، فلا تتردد في مشاركتها أدناه.

المزيد من الموارد: