comcrawl عبارة عن حزمة بيثون للاستعلام عن الصفحات وتنزيلها بسهولة من commoncrawl.org.
لقد ألهمتني عملية comcrawl من خلال قراءة هذا المقال.
ملاحظة: لقد صنعت هذا للمشاريع الشخصية وللمتعة. وبالتالي فإن هذه الحزمة مخصصة للاستخدام في المشاريع الصغيرة والمتوسطة، لأنها غير مُحسّنة للتعامل مع غيغابايت أو تيرابايت من البيانات. قد ترغب في التحقق من cdx-toolkit أو cdx-index-client في مثل هذه الحالات.
يعد مشروع Common Crawl "مستودعًا مفتوحًا لبيانات الزحف على الويب التي يمكن لأي شخص الوصول إليها وتحليلها" . يحتوي على مليارات صفحات الويب وغالبًا ما يستخدم لمشاريع البرمجة اللغوية العصبية لجمع كميات كبيرة من البيانات النصية.
يوفر Common Crawl فهرس بحث يمكنك استخدامه للبحث عن عناوين URL معينة في البيانات التي تم الزحف إليها. تحتوي كل نتيجة بحث على رابط وإزاحة بايت إلى موقع محدد في مجموعات AWS S3 الخاصة بها لتنزيل الصفحة.
يعمل comcrawl على تبسيط عملية البحث والتنزيل من Common Crawl من خلال تقديم واجهة API بسيطة يمكنك استخدامها في برنامج python الخاص بك.
comcrawl متاح على PyPI.
قم بتثبيته عبر النقطة عن طريق تشغيل الأمر التالي من جهازك الطرفي:
pip install comcrawl
سيكون HTML لكل صفحة متاحًا كسلسلة في مفتاح "html" في كل قاموس نتائج بعد استدعاء طريقة download
.
from comcrawl import IndexClient
client = IndexClient ()
client . search ( "reddit.com/r/MachineLearning/*" )
client . download ()
first_page_html = client . results [ 0 ][ "html" ]
يمكنك الاستفادة من مؤشرات الترابط المتعددة أثناء البحث أو التنزيل عن طريق تحديد عدد المواضيع التي تريد استخدامها.
يرجى الأخذ في الاعتبار عدم المبالغة في ذلك، حتى لا تضع الكثير من الضغط على خوادم Common Crawl (ألق نظرة على قواعد السلوك).
from comcrawl import IndexClient
client = IndexClient ()
client . search ( "reddit.com/r/MachineLearning/*" , threads = 4 )
client . download ( threads = 4 )
يمكنك بسهولة دمج هذه الحزمة مع مكتبة الباندا، لتصفية النتائج المكررة والإبقاء عليها على القرص:
from comcrawl import IndexClient
import pandas as pd
client = IndexClient ()
client . search ( "reddit.com/r/MachineLearning/*" )
client . results = ( pd . DataFrame ( client . results )
. sort_values ( by = "timestamp" )
. drop_duplicates ( "urlkey" , keep = "last" )
. to_dict ( "records" ))
client . download ()
pd . DataFrame ( client . results ). to_csv ( "results.csv" )
قد لا يكون مفتاح url وحده كافيًا هنا، لذا قد ترغب في كتابة دالة لحساب معرف مخصص من خصائص النتائج لإزالة التكرارات.
افتراضيًا، عند إنشاء مثيل له، يقوم IndexClient
بإحضار قائمة بفهرسة الزحف الشائعة المتوفرة حاليًا للبحث فيها. يمكنك أيضًا تقييد البحث على فهارس الزحف الشائعة المحددة، وذلك عن طريق تحديدها كقائمة.
from comcrawl import IndexClient
client = IndexClient ([ "2019-51" , "2019-47" ])
client . search ( "reddit.com/r/MachineLearning/*" )
client . download ()
عند تصحيح التعليمات البرمجية الخاصة بك، يمكنك تمكين تسجيل جميع طلبات HTTP التي تم إجراؤها.
from comcrawl import IndexClient
client = IndexClient ( verbose = True )
client . search ( "reddit.com/r/MachineLearning/*" )
client . download ()
عند الوصول إلى Common Crawl، يرجى الحذر من هذه الإرشادات التي نشرها أحد مشرفي Common Crawl:
https://groups.google.com/forum/#!msg/common-crawl/3QmQjFA_3y4/vTbhGqIBBQAJ