تجريف موقع بواسطة بايثون scraping beautifulsoup

تجريف موقع بواسطة بايثون  scraping beautifulsoup

ماهو تجريف الويب WebScraping

الجواب البسيط إستخراج البيانات من صفحات الإنترنت حيث أنه ليس كل موقع لديه API والتي توفر لنا البيانات التي نريدها من الموقع بتنسيق جاهز, أو بتنسيق Json الذي يوفر لنا بيانات منظمة . 
على سبيل المثال ، قد ترغب في الحصول تغريدات من حساب Twitter ، أو الصور من حساب Pinterest. وذلك بدون استخدام API،  ولهذا سيكون استخراج HTML أو الكشط/التجريف هو الطريقة الوحيدة للحصول على هذا المحتوى. سأريكم كيف نطبق ذلك في بايثون.
في هذه المقاله سنقوم ببرمجة أداة تجريف Scraper خاص بك بسهوله بلغه البايثون , وبالاستعانة بالمكتبة الشهيرة BeautifulSoup , بحيث نجعل الاداة تقوم باستخراج وجلب اي بيانات نريدها موجودة بالانترنت.

برمجة أداة استخراج جميع الروابط من موقع بواسطة بايثون

سنحتاج مكتبة  Beautifulsoup  لذلك عليك تثبيتها اولا:
ان كنت على الويندوز افتح موجه الاوامر cmd أو  افتح الطرفية Terminal ان كنت على اللينكس

pip install bs4
سنقوم باستدعاء مكتبة bs4 وسنحتاج تضمين import الموديل  BeautifulSoup منها

from bs4 import BeautifulSoup
نقوم ياستدعاء مكتبة urllib2 والذي نحتاجه في تنزيل محتوى الصفحة من الانترنت

import urllib2

نقوم بطلب الموقع, وضعت مدونة ويكي كالي لينكس كمثال
site = urllib2.urlopen("https://wikikali.blogspot.com")

نقوم بقراءة محتواها وتخزينه في متغير باسم siteHtml
siteHtml = site.read()
ثم نغلق الطلب request
site.close()
الان نقوم بتحليل محتوى الصفحة او الموقع الذي نزلناه على شكل html والموجود بمتغير باسم siteHtml
soup = BeautifulSoup(siteHtml)

الان بقي فقط ان نحدد ما نريد استخراجه من الموقع, سأبحث عن الوسم <a 
soup.find_all('a')
ثم نقوم باستخراج الروابط الموجودة داخله والتي يرمز لها بالرمز href بهذه الطريقة
links.get('href')
 وبواسطة حلقة loop for يصبح الامران
for links in soup.find_all('a'):
    print (links.get('href'))

في النهاية سيطبع لنا الروابط . وهذه نتيجة التطبيق
اضغط على الصورة لتكبيرها
تجريف موقع بواسطة بايثون  scraping beautifulsoup

كود السكريبت كامل

from bs4 import BeautifulSoup
import urllib2
site = urllib2.urlopen("https://wikikali.blogspot.com")
siteHtml = site.read()
site.close()
soup = BeautifulSoup(siteHtml)
for links in soup.find_all('a'):
    print (links.get('href'))
تجريف موقع بواسطة بايثون  scraping beautifulsoup