GooglesCraper هي أداة مفتوحة المصدر وستظل أداة مفتوحة المصدر في المستقبل.
كما سيظل الخليفة الحديثة لـ Googlescraper ، البنية التحتية للزحف للغرض العام ، مفتوحًا ومجانيًا.
ومع ذلك ، يرغب بعض الأشخاص في الحصول على خدمة تتيح لهم كشط بعض البيانات من Google أو أي محرك بحث آخر. لهذا السبب ، قمت بإنشاء خدمة الويب scrapeous.com.
الدولة الأخيرة: فبرور 2019
يمكن العثور على خليفة googlescraper هنا
هذا يعني أنني لن أحافظ على هذا المشروع بعد الآن. كل التطوير الجديد يذهب في المشروع أعلاه.
هناك عدة أسباب لعدم الاستمرار في بذل الكثير من الجهد في هذا المشروع.
لهذا السبب سأستمر في تطوير مكتبة تجريف تدعى https://www.npmjs.com/package/se-scraper في JavaScript التي تعمل فوق Puppeteer.
يمكنك تنزيل التطبيق هنا: https://www.npmjs.com/package/se-scraper
وهو يدعم مجموعة واسعة من محركات البحث المختلفة وهو أكثر كفاءة من googlescraper. قاعدة التعليمات البرمجية هي أيضًا أقل تعقيدًا بكثير دون إمكانيات الخيوط/الانتظار وقدرات التسجيل المعقدة.
للأسئلة ، يمكنك الاتصال بي على Wegpage الخاص بي واكتب لي بريدًا إلكترونيًا هناك.
عاد هذا المشروع للعيش بعد عامين من التخلي. في الأسابيع المقبلة ، سأستغرق بعض الوقت لتحديث جميع الوظائف إلى أحدث التطورات. ويشمل هذا تحديث جميع عمليات إعادة التجديد والتغييرات في سلوك محرك البحث. بعد أسبوعين ، يمكنك توقع أن يعمل هذا المشروع مرة أخرى كما هو موثق هنا.
تمت كتابة Googlescraper في Python 3. يجب عليك تثبيت Python 3.6 على الأقل. تم التطوير الرئيسي الأخير مع Python 3.7. لذلك عند استخدام Ubuntu 16.04 و Python 3.7 على سبيل المثال ، يرجى تثبيت Python 3 من الحزم الرسمية. أستخدم توزيع Anaconda Python ، والذي يعمل بشكل جيد للغاية بالنسبة لي.
علاوة على ذلك ، تحتاج إلى تثبيت متصفح Chrome وكذلك Chromedriver لوضع السيلينيوم. بدلاً من ذلك ، قم بتثبيت متصفح Firefox و Geckodriver لوضع السيلينيوم. انظر التعليمات أدناه.
يمكنك أيضًا تثبيت googlescraper بشكل مريح مع PIP:
virtualenv --python python3 env
source env/bin/activate
pip install GoogleScraper
في الوقت الحالي (سبتمبر 2018) ، تم تثبيط هذا. يرجى التثبيت من أحدث مصادر جيثب.
في بعض الأحيان ، لا تتوفر أحدث الأشياء والأكثر روعة في Cheeseshop (هكذا يسمون https://pypi.python.org/pypi/PIP). لذلك ربما ترغب في تثبيت googlescraper من أحدث مصدر موجود في مستودع github هذا. يمكنك أن تفعل ذلك مثل هذا:
virtualenv --python python3 env
source env/bin/activate
pip install git+git://github.com/NikolaiT/GoogleScraper/
يرجى ملاحظة أن بعض الميزات والأمثلة قد لا تعمل كما هو متوقع. أنا أيضًا لا أضمن أن التطبيق يعمل. أنا فقط أضمن (إلى حد ما على الأقل) أن التثبيت من PIP سيؤدي إلى إصدار قابل للاستخدام.
قم بتنزيل أحدث chromedriver من هنا: https://sites.google.com/a/chromium.org/chromedriver/downloads
قم بإلغاء ضغط برنامج التشغيل وحفظه في مكان ما ثم قم بتحديث chromedriver_path في ملف تكوين googlescraper scrape_config.py إلى المسار الذي قمت بحفظه لبرنامج تشغيل chromedriver_path = 'Drivers/chromedriver'
قم بتنزيل أحدث geckodriver من هنا: https://github.com/mozilla/geckodriver/releases
قم بإلغاء ضغط برنامج التشغيل وحفظه في مكان ما ، ثم قم بتحديث geckodriver_path في ملف تكوين googlescraper scrape_config.py إلى المسار الذي قمت فيه بحفظ برنامج التشغيل geckodriver_path = 'Drivers/geckodriver'
قم بتحديث الإعدادات التالية في ملف تكوين googlescraper scrape_config.py إلى قيمك.
# chrome driver executable path
# get chrome drivers here: https://chromedriver.storage.googleapis.com/index.html?path=2.41/
chromedriver_path = 'Drivers/chromedriver'
# geckodriver executable path
# get gecko drivers here: https://github.com/mozilla/geckodriver/releases
geckodriver_path = 'Drivers/geckodriver'
# path to firefox binary
firefox_binary_path = '/home/nikolai/firefox/firefox'
# path to chromium browser binary
chrome_binary_path = '/usr/bin/chromium-browser'
تثبيت كما هو موضح أعلاه. تأكد من أن لديك برامج تشغيل السيلينيوم لـ Chrome/Firefox إذا كنت ترغب في استخدام GooglesCraper في وضع السيلينيوم.
انظر كل الخيارات
GoogleScraper -h
كشط الكلمة الرئيسية المفردة "Apple" مع وضع HTTP:
GoogleScraper -m http --keyword "apple" -v info
كشط على جميع الكلمات الرئيسية الموجودة في الملفات SearchData/5words في وضع السيلينيوم باستخدام Chrome في الوضع غير المسموح به:
GoogleScraper -m selenium --sel-browser chrome --browser-mode headless --keyword-file SearchData/5words -v info
كشط جميع الكلمات الرئيسية الموجودة
GoogleScraper -m http --keyword-file SearchData/some_words.txt --num-workers 5 --search-engines "bing,yahoo" --output-filename threaded-results.json -v debug
قم بالبحث عن الصورة عن الكلمة الرئيسية "K2 Mountain" على Google:
GoogleScraper -s "google" -q "K2 mountain" -t image -v info
ربما تكون هذه هي الميزة الأكثر روعة في Googlescraper. يمكنك أن تتخلص من الآلاف من الطلبات في الثانية إذا
مثال على الوضع غير المتزامن:
ابحث في الكلمات الرئيسية في ملفات الكلمات الرئيسية SearchData/Marketing-Models-brands.txt على Bing و Yahoo. بشكل افتراضي ، يولد الوضع غير المتزامن 100 طلب في نفس الوقت. هذا يعني أن حوالي 100 طلب في الثانية (يعتمد على الاتصال الفعلي ...).
GoogleScraper -s "bing,yahoo" --keyword-file SearchData/marketing-models-brands.txt -m http-async -v info -o marketing.json
يمكن فحص النتائج (النتائج الجزئية ، لأنه كان هناك الكثير من الكلمات الرئيسية لعنوان IP واحد) في مخرجات الملف/Marketing.json.
Googlescraper معقدة للغاية. نظرًا لأن Googlescraper يدعم العديد من محركات البحث و HTML و JavaScript لمقدمي خدمات البحث هذه بشكل متكرر ، فغالبًا ما يتوقف Googlescraper عن العمل مع بعض محرك البحث. لاكتشاف هذا ، يمكنك إجراء اختبارات وظيفية .
على سبيل المثال ، يقوم الاختبار أدناه بتشغيل جلسة تجريف لـ Google و Bing واختبارات أن البيانات المجمعة تبدو على ما يرام بشكل أو بآخر.
python -m pytest Tests/functional_tests.py::GoogleScraperMinimalFunctionalTestCase
تعمل GoogleCraper على نتائج محرك بحث Google (والعديد من محركات البحث الأخرى _ ) بسهولة وبشكل سريع. يتيح لك استخراج جميع الروابط التي تم العثور عليها وعناوينها وأوصافها برمجياً والتي تمكنك من معالجة البيانات المكثفة بشكل أكبر.
هناك سيناريوهات استخدام غير محدودة:
بادئ ذي بدء ، تحتاج إلى فهم أن Googlescraper يستخدم نهجين مختلفين تمامًا :
urllib.request أو الوحدات requests . هذا يحاكي حزم HTTP المرسلة بواسطة متصفحات حقيقية.في حين تم تنفيذ النهج السابق أولاً ، فإن النهج اللاحق يبدو أكثر واعدة بالمقارنة ، لأن محركات البحث ليس لديها طريقة سهلة الكشف عنها.
يتم تنفيذ Googlescraper مع التقنيات/البرامج التالية:
حاليًا يتم دعم محركات البحث التالية:
الكشط هو موضوع حاسم ومعقد للغاية. لدى Google وغيرها من عمالقة محرك البحث ميل قوي لجعل الكاشطات حياة بأقصى قدر ممكن. هناك عدة طرق لمقدمي محرك البحث لاكتشاف أن الروبوت يستخدم محرك البحث الخاص بهم:
لذا فإن أكبر عقبة لمعالجة هي خوارزميات اكتشاف JavaScript. لا أعرف ما الذي تفعله Google في JavaScript ، لكنني سأقوم قريبًا بالتحقيق في الأمر أكثر ، ثم أقرر ما إذا كان من الأفضل تغيير الاستراتيجيات والتحول إلى نهج يتجول عن طريق محاكاة المتصفحات في بيئة تشبه المتصفح التي يمكنها تنفيذ JavaScript. يتم إنشاء شبكات كل من هذه المتصفحات الافتراضية ومعالجتها بحيث تتصرف مثل عميل المستخدم الفعلي الحقيقي. أنا متأكد من أنه يجب أن يكون من الممكن التعامل مع 20 جلسات المتصفح بطريقة موازية دون التأكيد على الموارد أكثر من اللازم. المشكلة الحقيقية هي كما هو الحال دائمًا في الافتقار إلى الوكلاء الجيدين ...
كما ذكر أعلاه ، هناك العديد من العيوب عند الخروج باستخدام urllib.request أو الوحدات requests والقيام بالشبكات بمفردي:
المتصفحات هي أنظمة برمجيات معقدة للغاية. يحتوي Chrome على حوالي 8 ملايين من الكود و Firefox حتى 10 loc. تستثمر الشركات الضخمة الكثير من المال لدفع التكنولوجيا إلى الأمام (HTML5 ، CSS3 ، معايير جديدة) ، لكل متصفح سلوك فريد. لذلك يكاد يكون من المستحيل محاكاة مثل هذا المتصفح يدويًا مع طلبات HTTP. هذا يعني أن Google لديها طرق عديدة لاكتشاف الحالات الشاذة والتناقضات في استخدام التصفح. وحده الطبيعة الديناميكية لجافا سكريبت تجعل من المستحيل كشط دون اكتشاف.
هذا يبكي لنهج بديل ، والذي يتم أتمتة متصفح حقيقي مع بيثون. سيكون من الأفضل التحكم في متصفح Chrome لأن Google لديها أقل حوافز لتقييد إمكانيات متصفحها الأصلي. وبالتالي ، أحتاج إلى طريقة لأتمتة الكروم مع Python والتحكم في العديد من الحالات المستقلة مع مجموعة مختلفة من الوكلاء. ثم ينمو إخراج النتيجة خطيًا مع عدد الوكلاء المستخدمين ...
بعض التقنيات/البرامج المثيرة للاهتمام للقيام بذلك:
ربما تكون أفضل طريقة لاستخدام googlescraper هي استخدامه من سطر الأوامر وإطلاق أمر مثل ما يلي:
GoogleScraper --keyword-file /tmp/keywords --search-engine bing --num-pages-for-keyword 3 --scrape-method selenium
هنا يمثل SEL وضع الكشط باعتباره "السيلينيوم". وهذا يعني أن googlescraper.py خدوش مع متصفحات حقيقية. هذا قوي جدًا ، حيث يمكنك كشط طويل وكثير من المواقع (تواجه Google وقتًا عصيبًا في حظر متصفحات حقيقية). يجب أن تكون وسيطة Flag --keyword-file ملف مع كلمات رئيسية مفصولة بواسطة الخطوط الجديدة. لذلك: لكل جوجل استعلام سطر واحد. سهل ، أليس كذلك؟
علاوة على ذلك ، فإن كلمة الخيار --num-pages-for-keyword يعني أن googlescraper ستجلب 3 صفحات متتالية لكل كلمة رئيسية.
مثال على ملف الكلمات الرئيسي:
keyword number one
how to become a good rapper
inurl:"index.php?sl=43"
filetype:.cfg
allintext:"You have a Mysql Error in your"
intitle:"admin config"
Best brothels in atlanta
بعد التجسس ، سيكون لديك تلقائيًا قاعدة بيانات SQLite3 جديدة في google_scraper.db المسماة في نفس الدليل. يمكنك فتح قاعدة البيانات وفحصها مع الأمر:
GoogleScraper --shell
لا ينبغي أن تكون مشكلة كشط الكلمات الرئيسية 10'000 في ساعتين . إذا كنت مجنونة حقًا ، فقم بتعيين المتصفحات القصوى في التكوين أعلى قليلاً (في الجزء العلوي من ملف البرنامج النصي).
إذا كنت تريد ، يمكنك تحديد العلم --proxy-file . كوسيطة ، تحتاج إلى تمرير ملف مع الوكلاء فيه ومع التنسيق التالي:
protocol proxyhost:proxyport username:password
(...)
مثال:
socks5 127.0.0.1:1080 blabla:12345
socks4 77.66.55.44:9999 elite:js@fkVA3(Va3)
في حال كنت ترغب في استخدام googlescraper.py في وضع http (مما يعني أنه يتم إرسال رؤوس HTTP الخام) ، استخدمه على النحو التالي:
GoogleScraper -m http -p 1 -n 25 -q "white light"
إذا كنت تشعر بالرغبة في الاتصال بي ، فقم بذلك وأرسل لي بريدًا. يمكنك العثور على معلومات الاتصال الخاصة بي على مدونتي.