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

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

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

هل تجد نفسك تقوم بنفس مهام تحسين محركات البحث المتكررة كل يوم أو تواجه تحديات حيث لا توجد أدوات يمكن أن تساعدك؟

إذا كان الأمر كذلك، فقد يكون الوقت قد حان لتتعلم بايثون.

إن الاستثمار الأولي للوقت والجهد سيؤتي ثماره في زيادة الإنتاجية بشكل كبير.

بينما أكتب هذه المقالة في المقام الأول لمحترفي تحسين محركات البحث (SEO) الجدد في البرمجة، آمل أن تكون مفيدة لأولئك الذين لديهم بالفعل خلفية في البرمجيات أو بايثون، ولكنهم يبحثون عن مرجع سهل المسح إلى استخدامها في مشاريع تحليل البيانات.

جدول المحتويات

أساسيات بايثون

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

عند كتابة برامج Python، يمكنك الاختيار بين Python 2 أو Python 3. من الأفضل كتابة برامج جديدة في Python 3، ولكن من الممكن أن يكون نظامك مزودًا بـ Python 2 مثبتًا بالفعل، خاصة إذا كنت تستخدم جهاز Mac. الرجاء أيضًا تثبيت Python 3 لتتمكن من استخدام ورقة الغش هذه.

يمكنك التحقق من إصدار Python الخاص بك باستخدام:

$ بيثون – الإصدار

استخدام البيئات الافتراضية

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

تشجع بايثون على إنشاء بيئات افتراضية لهذا الغرض.

إذا كان نظامك مزودًا بـ Python 2، فيرجى تنزيله و تثبيت بايثون 3 باستخدام توزيع Anaconda وقم بتشغيل هذه الخطوات في سطر الأوامر الخاص بك.

$sudo easy_install النقطة
$sudo pip تثبيت virtualenv
$mkdir سيوورك
$virtualenv -p python3 seowork

إذا كنت تستخدم Python 3 بالفعل، فيرجى تشغيل هذه الخطوات البديلة في سطر الأوامر الخاص بك:

$mkdir سيوورك
$python3 -m venv seowork

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

$cd سيوورك
$مصدر بن/تفعيل
(سيوورك)$تعطيل

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

مكتبات مفيدة لتحليل البيانات

عندما أبدأ مشروعًا لتحليل البيانات، أرغب في تثبيت المكتبات التالية على الأقل:

يتم تضمين معظمها في توزيع أناكوندا. دعونا نضيفهم إلى بيئتنا الافتراضية.

(seowork) طلبات تثبيت $pip3
(seowork)$pip3 تثبيت matplotlib
(seowork)$pip3 طلبات التثبيت-html
(seowork)$pip3 تثبيت الباندا

يمكنك استيرادها في بداية الكود الخاص بك مثل هذا:

طلبات الاستيراد
من request_html استيراد HTMLSession
استيراد الباندا ك pd

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

يمكنك تصدير جميع المكتبات (وأرقام إصداراتها) المثبتة في بيئتك الافتراضية باستخدام:

(seowork)$pip3 تجميد > المتطلبات.txt

عند مشاركة هذا الملف مع مشروعك، يمكن لأي شخص آخر من المجتمع تثبيت جميع المكتبات المطلوبة باستخدام هذا الأمر البسيط في البيئة الافتراضية الخاصة بهم:

(نظير seowork)$pip3 install -r Requirements.txt

استخدام دفاتر Jupyter

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

(seowork)$pip3 تثبيت jupyter

ثم يمكنك تشغيل دفتر الملاحظات باستخدام:

(seowork) دفتر jupyter $

سوف تحصل على عنوان URL لفتحه في متصفحك.

بدلا من ذلك، يمكنك استخدام جوجل التعاونية وهو جزء من GoogleDocs ولا يتطلب أي إعداد.

تنسيق السلسلة

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

لنفترض أنك تريد جلب بيانات Google Analytics برمجيًا. يمكنك إنشاء عنوان URL لواجهة برمجة التطبيقات باستخدام Google Analytics Query Explorer، واستبدال قيم المعلمات في واجهة برمجة التطبيقات بعناصر نائبة باستخدام الأقواس. على سبيل المثال:

api_uri = “https://www.googleapis.com/analytics/v3/data/ga?ids={gaid}&”\
“تاريخ البدء={البدء}&تاريخ الانتهاء={النهاية}&metrics={metrics}&”\
“الأبعاد={الأبعاد}&segment={segment}&access_token={token}&”\
“الحد الأقصى للنتائج={max_results}”

{gaid} هو حساب Google، أي “ga:12345678”

{start} هو تاريخ البدء، أي “01-06-2017”

{end} هو تاريخ الانتهاء، أي “2018-06-30”

{metrics} مخصص لقائمة المعلمات الرقمية، على سبيل المثال، “ga:users”، “ga:newUsers”

{dimensions} هي قائمة المعلمات الفئوية، أي “ga:landingPagePath”، “ga:date”

{segment} هي قطاعات التسويق. بالنسبة لتحسين محركات البحث، نريد البحث العضوي، وهو “gaid::-5”

{token} هو رمز الوصول الأمني ​​الذي تحصل عليه من Google Analytics Query Explorer. تنتهي صلاحيته بعد ساعة، وتحتاج إلى تشغيل الاستعلام مرة أخرى (أثناء المصادقة) للحصول على استعلام جديد.

{max_results} هو الحد الأقصى لعدد النتائج للحصول على ما يصل إلى 10000 صف.

يمكنك تحديد متغيرات Python للاحتفاظ بكل هذه المعلمات. على سبيل المثال:

جايد = “جا:12345678”
البداية = “01-06-2017”
النهاية = “2018-06-30”

يتيح لك ذلك جلب البيانات من مواقع ويب أو نطاقات بيانات متعددة بسهولة إلى حد ما.

وأخيرًا، يمكنك دمج المعلمات مع عنوان URL لواجهة برمجة التطبيقات (API) لإنتاج طلب API صالح للاتصال.

api_uri = api_uri.format(
جيد = سعيد،
ابدأ = ابدأ،
نهاية = نهاية،
المقاييس = المقاييس،
الأبعاد = الأبعاد،
قطعة = قطعة،
رمز = رمز،
max_results=max_results
)

ستستبدل بايثون كل مكان بقيمته المقابلة من المتغيرات التي نمررها.

ترميز السلسلة

يعد التشفير أسلوبًا شائعًا آخر لمعالجة السلسلة. تتطلب العديد من واجهات برمجة التطبيقات (APIs) سلاسل منسقة بطريقة معينة.

على سبيل المثال، إذا كانت إحدى معلماتك عبارة عن عنوان URL مطلق، فستحتاج إلى تشفيره قبل إدراجه في سلسلة واجهة برمجة التطبيقات (API) مع العناصر النائبة.

من تحليل استيراد urllib
URL = “https://www.searchenginejournal.com/”
تحليل.اقتباس(url)

سيبدو الإخراج كما يلي: “https%3A//www.searchenginejournal.com/” والتي ستكون آمنة لتمريرها إلى طلب API.

مثال آخر: لنفترض أنك تريد إنشاء علامات عنوان تتضمن علامة العطف (&) أو قوسين زاوية (<، >). يجب الهروب من هذه العناصر لتجنب إرباك محللي HTML.

استيراد أتش تي أم أل
title= “SEO <الأخبار والبرامج التعليمية>“
html.escape(العنوان)

سيبدو الإخراج كما يلي:

‘”تحسين محركات البحث&”& البرامج التعليمية>’

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

html.unescape(escaped_title)

سيتم قراءة الإخراج مرة أخرى مثل النص الأصلي.

تنسيق التاريخ

من الشائع جدًا تحليل بيانات السلاسل الزمنية، ويمكن أن تأتي قيم طابع التاريخ والوقت بتنسيقات عديدة ومختلفة. تدعم Python التحويل من التواريخ إلى السلاسل والعودة.

على سبيل المثال، بعد أن نحصل على نتائج من Google Analytics API، قد نرغب في تحليل التواريخ إلى كائنات التاريخ والوقت. وهذا سيجعل من السهل فرزها أو تحويلها من تنسيق سلسلة إلى آخر.

من تاريخ وقت الاستيراد
dt = datetime.strptime(‘5 يناير 2018 الساعة 6:33 مساءً’، ‘%b %d %Y %I:%M%p’)

هنا %b و%d وما إلى ذلك هي توجيهات مدعومة بواسطة strptime (المستخدمة عند قراءة التواريخ) وstrftime (المستخدمة عند كتابتها). يمكنك العثور على المرجع الكامل هنا.

تقديم طلبات API

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

ص = طلبات.جيت (api_uri)

يمكننا التحقق من الرد للتأكد من أن لدينا بيانات صالحة.

طباعة (r.status_code)
طباعة (r.headers[‘content-type’])

يجب أن تشاهد رمز الحالة 200. نوع المحتوى لمعظم واجهات برمجة التطبيقات هو JSON بشكل عام.

عند التحقق من سلاسل إعادة التوجيه، يمكنك استخدام معلمة سجل إعادة التوجيه لرؤية السلسلة الكاملة.

طباعة (ص. التاريخ)

للحصول على عنوان URL النهائي، استخدم:

طباعة (r.url)

جزء كبير من عملك هو الحصول على البيانات التي تحتاجها لإجراء التحليل. وستكون البيانات متاحة من مصادر وأشكال مختلفة. دعونا استكشاف الأكثر شيوعا.

القراءة من JSON

ستعرض معظم واجهات برمجة التطبيقات النتائج بتنسيق JSON. نحتاج إلى تحليل البيانات بهذا التنسيق إلى قواميس بايثون. يمكنك استخدام مكتبة JSON القياسية للقيام بذلك.

استيراد json
json_response=”{“website_name”: “مجلة محرك البحث”، “website_url”:https://www.searchenginejournal.com/”}”
parsed_response = json.loads(json_response)

الآن يمكنك الوصول بسهولة إلى أي بيانات تحتاجها. على سبيل المثال:

طباعة (parsed_response[“website_name”])

سيكون الإخراج:

“مجلة محرك البحث”

عند استخدام مكتبة الطلبات لإجراء استدعاءات واجهة برمجة التطبيقات (API)، فلن تحتاج إلى القيام بذلك. يوفر كائن الاستجابة خاصية ملائمة لهذا الغرض.

parsed_response=r.json()

القراءة من صفحات HTML

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

من request_html استيراد HTMLSession
الجلسة = HTMLSession ()
r = session.get(‘https://www.searchenginejournal.com/’)

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

طباعة (r.html.absolute_links)

سيبدو الإخراج الجزئي كما يلي:

{‘https://jobs.searchenginejournal.com/’, ‘https://www.searchenginejournal.com/what-i-learned-about-seo-this-year/281301/’, …}

بعد ذلك، دعونا نجلب بعض علامات تحسين محركات البحث الشائعة التي نستخدمها مسارات XPATH:

عنوان الصفحة

r.html.xpath(‘//العنوان/النص ()’)

الإخراج هو:

[‘Search Engine Journal – SEO, Search Marketing News and Tutorials’]

ميتا الوصف

r.html.xpath(“//meta[@name=”description”]/@محتوى”)

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

الإخراج هو:

[‘Search Engine Journal is dedicated to producing the latest search news, the best guides and how-tos for the SEO and marketer community.’]

العنوان الأساسي

r.html.xpath(“//link[@rel=”canonical”]/@href”)

الإخراج هو:

[‘https://www.searchenginejournal.com/’]

عنوان URL لصفحات AMP

r.html.xpath(“//link[@rel=”amphtml”]/@href”)

لا تحتوي مجلة محرك البحث على عنوان URL لـ AMP.

الروبوتات الفوقية

r.html.xpath(“//meta[@name=”ROBOTS”]/@محتوى”)

الإخراج هو:

[‘NOODP’]

H1s

r.html.xpath(“//h1”)

لا تحتوي الصفحة الرئيسية ليومية محرك البحث على h1s.

قيم سمات HREFLANG

r.html.xpath(“//link[@rel=”alternate”]/@hreflang”)

لا تحتوي مجلة محرك البحث على سمات hreflang.

التحقق من موقع جوجل

r.html.xpath(“//meta[@name=”google-site-verification”]/@محتوى”)

الإخراج هو:

[‘NcZlh5TFoRGYNheLXgxcx9gbVcKCsHDFnrRyEUkQswY’,
‘d0L0giSu_RtW_hg8i6GRzu68N3d4e7nmPlZNA9sCc5s’,
‘S-Orml3wOAaAplwsb19igpEZzRibTtnctYrg46pGTzA’]

عرض جافا سكريبت

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

من request_html استيراد HTMLSession
الجلسة = HTMLSession ()
r = session.get(‘https://www.searchenginejournal.com/’)
r.html.render()

ستستغرق المرة الأولى التي تقوم فيها بتشغيل render() بعض الوقت لأنه سيتم تنزيل Chromium. يعد عرض Javascript أبطأ بكثير من عدم العرض.

القراءة من طلبات XHR

نظرًا لأن عرض JavaScript بطيء ويستغرق وقتًا طويلاً، يمكنك استخدام هذا الأسلوب البديل لمواقع الويب التي تقوم بتحميل محتوى JavaScript باستخدام طلبات AJAX.

ajax_request = “https://www.searchenginejournal.com/location.json”
ص = طلبات.جيت (ajax_request)
النتائج=r.json()

سوف تحصل على البيانات التي تحتاجها بشكل أسرع لأنه لا يوجد عرض لجافا سكريبت أو حتى تحليل HTML.

القراءة من سجلات الخادم

يعد برنامج Google Analytics قويًا ولكنه لا يسجل أو يقدم الزيارات من معظم برامج زحف محركات البحث. يمكننا الحصول على هذه المعلومات مباشرة من ملفات سجل الخادم.

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

إعادة الاستيراد
log_line=”66.249.66.1 – – [06/Jan/2019:14:04:19 +0200] “GET / HTTP/1.1” 200 – “” “Mozilla/5.0 (متوافق؛ Googlebot/2.1؛ +http://www.google.com/bot.html)””
التعبير العادي ='([(\d\.)]+) – – \[(.*?)\] \”(.*?)\” (\d+) – \”(.*?)\” \”(.*?)\”‘
المجموعات=re.match(regex, line).groups()
طباعة (مجموعات)

يقوم الإخراج بتقسيم كل عنصر من عناصر إدخال السجل بشكل جيد:

(‘66.249.66.1’، ’06/Jan/2019:14:04:19 +0200’، ‘GET / HTTP/1.1’، ‘200’، ”، ‘Mozilla/5.0 (متوافق؛ Googlebot/2.1؛ + http://www.google.com/bot.html))’)

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

طباعة (مجموعات[5])

الإخراج هو:

“Mozilla/5.0 (متوافق؛ Googlebot/2.1؛ +http://www.google.com/bot.html)”

يمكنك التعرف على التعبير العادي في بايثون هنا. تأكد من مراجعة القسم الخاص بالتعبيرات الجشعة مقابل التعبيرات غير الجشعة. أنا أستخدم غير الجشع عند إنشاء المجموعات.

التحقق من جوجل بوت

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

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

مقبس الاستيراد
bot_ip = “66.249.66.1”
المضيف = المقبس.gethostbyaddr(bot_ip)
طباعة (المضيف[0])

ستحصل الزحف-66-249-66-1.googlebot.com

ip = المقبس.gethostbyname(host[0])

لقد حصلت “66.249.66.1”، مما يوضح أن لدينا عنوان IP حقيقيًا لـ Googlebot لأنه يطابق عنوان IP الأصلي الذي استخرجناه من سجل الخادم.

القراءة من عناوين URL

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

من الممكن تقسيم عناوين URL إلى مكوناتها باستخدام التعبيرات العادية، ولكن من الأسهل والأقوى استخدام المكتبة القياسية urllib لهذا.

من urllib.parse استيراد urlparse
url=”https://www.searchenginejournal.com/?s=google&search-orderby=relevance&searchfilter=0&search-date-from=January+1%2C+2016&search-date-to=January+7%2C+2019″
parsed_url=urlparse(url)
طباعة (parsed_url)

الإخراج هو:

ParseResult(scheme = “https”، netloc = “www.searchenginejournal.com”، path = “/”، params = “”، query=’s=google&search-orderby=relevance&searchfilter=0&search-date-from=January+1% 2C+2016&search-date-to=January+7%2C+2019’، جزء = “”)

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

طباعة (parsed_url.netloc)
طباعة (parsed_url.path)

وهذا من شأنه أن يخرج ما تتوقعه.

يمكننا أيضًا تقسيم سلسلة الاستعلام للحصول على معلمات عنوان url وقيمها.

parsed_query=parse_qs(parsed_url.query)
طباعة (parsed_query)

تحصل على قاموس بايثون كمخرج.

{‘س’: [‘google’],
“تاريخ البحث من”: [‘January 1, 2016’],
“تاريخ البحث إلى”: [‘January 7, 2019’],
“ترتيب البحث”: [‘relevance’],
‘تصفية البحث’: [‘0’]}

يمكننا الاستمرار في تحليل سلاسل التاريخ إلى كائنات وقت وتاريخ في Python، مما يسمح لك بإجراء عمليات التاريخ مثل حساب عدد الأيام بين النطاق. سأترك ذلك كتمرين لك.

هناك أسلوب شائع آخر يمكنك استخدامه في تحليلك وهو فصل جزء المسار من عنوان URL بواسطة “/” للحصول على الأجزاء. هذا أمر بسيط للقيام به مع وظيفة الانقسام.

url=”https://www.searchenginejournal.com/category/digital-experience/”
parsed_url=urlparse(url)
parsed_url.path.split(“/”)

سيكون الإخراج:

[”, ‘category’, ‘digital-experience’, ”]

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

على سبيل المثال، يمكنك العثور على جميع المنتجات وجميع الفئات على موقع التجارة الإلكترونية عندما تسمح بنية عنوان URL بذلك.

إجراء التحليل الأساسي

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

لنبدأ بتحميل زحف Screaming Frog إلى إطار بيانات الباندا.

استيراد الباندا ك pd
df = pd.DataFrame(pd.read_csv(‘internal_all.csv’, header=1, parse_dates=[‘Last Modified’]))
طباعة (df.dtypes)

يُظهر الإخراج جميع الأعمدة المتوفرة في ملف Screaming Frog وأنواع Python الخاصة بها. لقد طلبت من الباندا تحليل العمود “آخر تعديل” إلى كائن وقت وتاريخ في Python.

دعونا نجري بعض التحليلات على سبيل المثال.

التجميع حسب دليل المستوى الأعلى

أولاً، لنقم بإنشاء عمود جديد بنوع الصفحات عن طريق تقسيم مسار عناوين URL واستخراج اسم الدليل الأول.

df[‘Page Type’]=df[‘Address’].apply(lambda x: urlparse(x).path.split(“/”)[1])
Collected_df=df[[‘Page Type’,’Word Count’]].مجموعة من([‘Page Type’]).agg(‘المجموع’)
طباعة (مجمعة_df)

بعد أن نقوم بإنشاء عمود “نوع الصفحة”، نقوم بتجميع كافة الصفحات حسب النوع وحسب إجمالي عدد الكلمات. يبدو الإخراج جزئيًا كما يلي:

دليل تحسين محركات البحث 736 أفضل ممارسات تحسين محركات البحث الداخلية 2012 تدقيق الكلمات الرئيسية 2104 مخاطر تحسين محركات البحث 2435 أدوات تحسين محركات البحث 588 اتجاهات تحسين محركات البحث 3448 اتجاهات تحسين محركات البحث 2019 2676 قيمة تحسين محركات البحث 1528

التجميع حسب رمز الحالة

Status_code_df=df[[‘Status Code’, ‘Address’]].مجموعة من([‘Status Code’]).agg(‘العد’)
طباعة (status_code_df)

20021830163025

إدراج عمليات إعادة التوجيه المؤقتة

temp_redirects_df=df[df[‘Status Code’] == 302][‘Address’]
طباعة (temp_redirects_df)

50 https://www.searchenginejournal.com/wp-content… 116 https://www.searchenginejournal.com/wp-content… 128 https://www.searchenginejournal.com/feed 154 https:/ /www.searchenginejournal.com/wp-content…206 https://www.searchenginejournal.com/wp-content…

صفحات القائمة بدون محتوى

no_content_df=df[(df[‘Status Code’] == 200) & (مدافع[‘Word Count’] == 0 ) ][[‘Address’,’Word Count’]]

7 https://www.searchenginejournal.com/author/cor… 0 9 https://www.searchenginejournal.com/author/vic… 0 66 https://www.searchenginejournal.com/author/ada … 0 70 https://www.searchenginejournal.com/author/ron… 0

نشاط النشر

دعونا نرى في أي وقت من اليوم يتم نشر معظم المقالات في SEJ.

lastmod = pd.DatetimeIndex(df[‘Last Modified’])
write_activity_df=df.groupby([lastmod.hour])[‘Address’].عدد()

0.0 19 1.0 55 2.0 29 10.0 10 11.0 54 18.0 7 19.0 31 20.0 9 21.0 1 22.0 3

ومن المثير للاهتمام أن نرى أنه لا توجد تغييرات كثيرة خلال ساعات العمل العادية.

يمكننا رسم هذا مباشرة من الباندا.

write_activity_df.plot.bar()

حفظ وتصدير النتائج

نصل الآن إلى الجزء السهل – وهو حفظ نتائج عملنا الشاق.

الحفظ في إكسل

الكاتب = pd.ExcelWriter(no_content.xlsx’)
no_content_df.to_excel(كاتب،’النتائج’)
كاتب.حفظ()

الحفظ إلى CSV

Temporary_redirects_df.to_csv(‘temporary_redirects.csv’)

موارد إضافية لمعرفة المزيد

لقد قمنا بالكاد بخدش سطح ما هو ممكن عند إضافة البرمجة النصية لـ Python إلى عملك اليومي في مجال تحسين محركات البحث (SEO). فيما يلي بعض الروابط لاستكشاف المزيد.

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


اعتمادات الصورة

لقطة شاشة التقطها المؤلف، يناير 2019
مؤامرة شريطية أنشأها المؤلف، يناير 2019