ماهو التجريف الويب 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 = site.read()
ثم نغلق الطلب request
site.close()
الان نقوم بتحليل محتوى الصفحة او الموقع الذي نزلناه على شكل html والموجود بمتغير باسم siteHtml
soup = BeautifulSoup(siteHtml)
الان بقي فقط ان نحدد ما نريد استخراجه من الموقع, سأبحث عن الوسم
soup.find_all('a')
ثم نقوم باستخراج الروابط الموجودة داخله والتي يرمز لها بالرمز href بهذه الطريقة
links.get('href')
وبواسطة حلقة loop for يصبح الامران
for links in soup.find_all('a'):
print (links.get('href'))
في النهاية سيطبع لنا الروابط . وهذه نتيجة التطبيق
اضغط على الصورة لتكبيرها
كود السكريبت كامل
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'))