يحتوي هذا المستودع على رمز لإعادة إنتاج النتائج الواردة في قصتنا ، "أفضل نتيجة بحث Google؟ مفاجأة! إنها Google" من سلسلة Google ، العملاقة.
تم وصف منهجيتنا في "كيفية تحليل نتائج بحث Google".
يمكن العثور على الأشكال والجداول من تحليلنا في مجلد data .
نظرًا لأن مجموعة البيانات الكاملة لدينا كانت كبيرة جدًا في GitHub ، فنحن نقدم مجموعة فرعية في مجلد data-subsample .
لاستخدام مجموعة البيانات الكاملة ، يرجى الرجوع إلى بيانات التنزيل.
يمكن العثور على أداة تحليل الويب المكانية الجديدة الخاصة بنا في utils/web_assay.py .
تعد دفاتر الملاحظات Jupyter المستخدمة في معالجة البيانات والتحليل في مجلد notebooks .
تم تحديد وصف لكل دفتر ملاحظات في قسم دفاتر الملاحظات أدناه.
تأكد من تثبيت Python 3.6+ ، استخدمنا Miniconda لإنشاء بيئة افتراضية Python 3.8.
ثم قم بتثبيت حزم Python:
pip install -r requirements.txt
تحتوي بعض الحزم على تبعيات إضافية ( geckodriver ، xvfb ، GLFW ) المذكورة في الأقسام أدناه.
يتم استخدام السيلينيوم لتنفيذ أتمتة المتصفح أثناء خطوات جمع البيانات والمعالجة المسبقة. على الرغم من أننا نقوم بتنزيل Selenium عندما نقوم بتثبيت متطلبات Python (أعلاه) ، يجب عليك التأكد أيضًا من تنزيل Firefox ، والذي يتطلب Geckodriver. تعليمات التثبيت التفصيلية في وثائق السيلينيوم.
نستخدم pyvirtualdisplay للتصفح مقطوعة الرأس. على الرغم من أن هذا مغطى بملف متطلبات Python ، إلا أن التحقق المزدوج لديك تبعيات مثل xvfb المثبتة. هناك تعليمات مفصلة في وثائق PyvirtualDisplay. إذا لم تكن بحاجة إلى القيام بتصفح مقطوعة الرأس ، فهذا ليس شرطًا.
لديبيان:
sudo apt-get install xvfb xserver-xephyr vnc4server xfonts-base
نستخدم منفذ Python الأصلي لمكتبة الرسوم البيانية P5.js لرسم الأشكال برمجيا. يستخدم P5 GLFW لبعض العمليات على رسومات OpenGL ، وتختلف المتطلبات قليلاً بناءً على نظام التشغيل الخاص بك ، يرجى التحقق من وثائق P5 لضمان أن لديك المتطلبات اللازمة.
لنظام التشغيل Mac:
brew install glfw
لديبيان:
sudo apt-get install libglfw3-dev libglfw3
يتميز هذا الريبو بمجموعة فرعية (ن = 400) من مجموعة البيانات النهائية لدينا (ن = 15 كيلو) في data_subsample/ Directory. توضح المجموعة الفرعية بشكل كاف منهجياتنا وتوفر أرقامًا قابلة للمقارنة لمجموعة البيانات الكاملة.
ومع ذلك ، إذا كنت ترغب في استخدام مجموعة البيانات الكاملة ، فيمكنك العثور عليها هنا:
# To reproduce the data preprocessing in its entirety start with the HTML files here:
https://markup-public-data.s3.amazonaws.com/google-search-audit/input_files.tar.xz
# To reproduce the analysis you just need the spatial metadata jsonl files parsed from the HTML files:
https://markup-public-data.s3.amazonaws.com/google-search-audit/intermediary_files.tar.xz
أو إذا كنت تثق بنا ، يمكنك تشغيل البرنامج النصي التالي:
sh data/download-full-dataset.sh
سيقوم البرنامج النصي بتنزيل ملفين tar.xz وتفريغهما في data/ المجلد.
نقترح تشغيل الجفاف مع بيانات المجموعة الفرعية الموجودة في data_subsample/ قبل القيام بذلك!
بعد أن يكون لديك مجموعة البيانات الكاملة ، يمكنك قلب هذا المفتاح في بداية دفاتر جوبايتر في notebooks/ .
use_full_dataset = True
بعد تنزيل السيلينيوم ، تأكد من أنه يعمل! لقد أنشأنا اختبارات للتأكد من أن هذه السائقين تعمل ويمكنك محاكاة جهاز محمول. هذا ضروري في خطوة المعالجة المسبقة للبيانات للحصول على موقع وأبعاد العناصر.
هنا هو كيفية القيام بهذه الاختبارات.
تغيير الدلائل إلى مجلد الاختبارات:
cd tests
ثم هناك اختباران - أحدهما يختبر fuctionality parser
python test_parsers.py
واحد يختبر تدفق اختبار الويب الكامل باستخدام عدة أمثلة في مجلد data/tests .
python test_assay.py
إذا كنت ترغب في إعادة تشغيل نتائجنا ، فيجب تشغيل دفاتر الملاحظات بالتتابع.
ومع ذلك ، إذا كنت تريد نظرة عامة سريعة على المنهجية التي تحتاجها فقط للقلق من أجهزة الكمبيوتر المحمولة باستخدام Asterix (*).
عرض عملي لوظيفة فحوصات الويب على نتيجة بحث. هذا يمشي من خلال الكود الأساسي الذي يشرح في طريقة طريقة طريقة.
هذا يدير تدفق اختبار الويب على مجمل مجموعة بيانات الإدخال من صفحات HTML التي جمعناها.
البيانات المسبقة للبيانات. يتضمن توحيد الفئات التي يتم إرجاعها بواسطة المحللين ، وتطبيع طول صفحات الويب ، وحساب المساحة في 50 كميات.
دفتر التحليل الرئيسي الذي يستنسخ الأشكال والجداول الموجودة في قسم النتائج لدينا.
تجربة فكرية توضح كيف ستتغير حساباتنا الخاصة بـ Google و Google Real Estate لو نظرنا في تفسيرات مختلفة لما تم تضمينه في كل فئة. هذا في قسم القيود لدينا.
يوضح كيف تختلف حسابات العقارات بين مجموعات مختلفة من عمليات البحث. يتم تجميع عمليات البحث معًا بناءً على "كيانات" فريدة ، أو مواضيع بحث من Trends Google. هذا في قسم القيود لدينا.
بعد فحص SPOTCHING 700 من عمليات البحث الملون ، تمكنا من حساب معدلات الخطأ لدقة تصنيفاتنا ودقة حدودنا العقارية. نقوم أيضًا بقياس تأثير أوجه القصور الفنية لدينا ، من خلال حساب البكسلات التي أخطأنا في تصنيفها. هذا في الملحق لدينا.
يحتوي هذا المجلد على وظائف مساعد ورمز لأداة تحليل الويب المكانية الخاصة بنا ، اختبار الويب.
utils/
├── config.py
├── draw_img.py
├── parsers.py
├── prodigy
│ ├── config
│ │ ├── prodigy.json
│ │ └── serp-help.html
│ └── search_audit.py
├── timeout.py
└── web_assay.py
الفئة الأساسية وفحص الويب Search Web في utils/web_assay.py .
68 محللات الويب التي نستخدمها لتصنيف عناصر صفحة بحث Google موجودة في utils/parsers.py .
ستجد المزيد من السياق حول كيفية عملها في ملحق ورقة MethodLogy الخاصة بنا.
غلافنا حول p5.js هو في utils/draw_img.py .
تعليمات أداة التعليقات التوضيحية في utils/prodigy . دليل التعليقات التوضيحية الخاصة بنا للتحقق من الأخطاء في لقطات شاشة ملطخة في utils/prodigy/config/serp-help.html .
هذا الدليل هو حيث يتم حفظ الوسطاء والمخرجات من مجموعة البيانات الكاملة.
data/
├── assets
│ ├── stained-screenshot-examples
│ └── assay-flow.png
├── error_analysis
│ ├── adrianne-annotations.csv.gz
│ ├── adrianne-pixel-errors.csv
│ ├── leon-annotations.csv.gz
│ └── leon-pixel-errors.csv
├── output
│ ├── figures
│ └── tables
└── test
├── input_local_searches
├── intermediate_local_searches
└── parser_output
تحتوي data/assets/stained-screenshot-examples على أمثلة على لقطات شاشة ملطخة باستخدام اختبار الويب-أداة تحليل الويب الجديدة الخاصة بنا. يحتوي data/error_analysis على بيانات فحص بقعة من اثنين من المضيفين.
تحتوي data/output على جداول وأرقام المستخدمة في مقال العرض الخاص بك .
تحتوي data/test على بعض نتائج البحث عن عينة "HTML" للاختبارات notebooks/0-demo-web-assay.ipynb .
إذا قمت بتنزيل مجموعة البيانات الكاملة ، فيجب استخراج المحتويات في data/ ، مما يعكس تنظيم data_subsample/ .
data_subsample/ يحتوي على HTML الخام ( data_subsample/input/ ) والوسطاء للحصول على مجموعة عشوائية من 400 نتائج بحث من عينة 15K لدينا.
data_subsample/
├── input
│ └── google_search
└── intermediary
├── element_metadata.jsonl.gz
└── google_search
يتم شحن مجموعة البيانات الأصغر هذه مع المستودع لإظهار منهجيتنا بطريقة في الوقت المناسب وأقل كثافة للموارد من مجموعة البيانات الكاملة.
element_metadata.json1.gz هو بيانات تعريف العنصر المكاني المعالجة مسبقًا من اختبار الويب. يستخدم الجزء الأكبر من تحليلنا مجموعة البيانات هذه ، سواء كانت من المجموعة الفرعية أو مجموعة البيانات الكاملة.
حقوق الطبع والنشر 2020 ، The Markup News Inc.
يُسمح بإعادة التوزيع والاستخدام في النماذج المصدر والثنائية ، مع أو بدون تعديل ، شريطة استيفاء الشروط التالية:
يجب أن تحتفظ إعادة توزيع رمز المصدر بإشعار حقوق الطبع والنشر أعلاه ، وقائمة الشروط هذه وإخلاء المسؤولية التالية.
يجب أن تقوم إعادة التوزيع في النموذج الثنائي بإعادة إنتاج إشعار حقوق الطبع والنشر أعلاه ، وقائمة الشروط هذه وإخلاء المسؤولية التالية في الوثائق و/أو المواد الأخرى المتوفرة مع التوزيع.
لا يجوز استخدام اسم حامل حقوق الطبع والنشر ولا أسماء المساهمين لدعم أو الترويج للمنتجات المستمدة من هذا البرنامج دون إذن كتابي مسبق محدد.
يتم توفير هذا البرنامج من قبل حاملي حقوق الطبع والنشر والمساهمين "كما هو" وأي ضمانات صريحة أو ضمنية ، بما في ذلك ، على سبيل المثال لا الحصر ، الضمانات الضمنية للتسويق والملاءمة لغرض معين. لا يجوز بأي حال من الأحوال أن يتحمل حامل حقوق الطبع والنشر أو المساهمين أي أضرار مباشرة أو غير مباشرة أو عرضية أو خاصة أو مثالية أو مثالية (بما في ذلك ، على سبيل المثال لا الحصر ، شراء السلع أو الخدمات البديلة ؛ إمكانية هذا الضرر.