اذهب إلى المحتوى
  • 0

تحليل جزء محدد فقط من المستند باستخدام BeautifulSoup في بايثون

إياد أحمد

السؤال

لدي موقع الويب التالي:
https://en.wikipedia.org/wiki/Nike,_Inc
 وأريد تحليل جزء محدد منه على سبيل المثال أريد فقط العناصر التي لها الكلاس  mw-headline لذا كيف يمكننا القيام بذلك؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

نستخدم الوسيط parse_only  والوحدة SoupStrainer والتي من خلالها نحدد أي جزء يجب استخراجه. كما يلي:

# استيراد الوحدات اللازمة
from bs4 import BeautifulSoup
import requests
#  تحديد العنوان الهدف
url="https://en.wikipedia.org/wiki/Nike,_Inc."
# لكي لايتم اعتبارنا بريد عشوائي وبالتالي تجنب الحظر user agent وإضافة  Header  تعريف 
HEADERS = ({'User-Agent':
		'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36\
		(KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36',
			'Accept-Language': 'en-US, en;q=0.5'})
# GET ارسال طلب 
request = requests.get(url, headers= HEADERS)

الآن نستخدم الوسيط parse_only  في باني bs4 ونمرر له كائن SoupStrainer لتصفية الأجزاء التي نحتاجها فقط من الموقع. لاحظ أن الشرطة السفلية بعد class لن تكون موجودة في حالة تصفية العناصر بناءً على معرفاتهم (IDs). في هذه الحالة، نريد فقط تحليل العناصر التي لها الصنف "mw-headline". 

# استيراد الوحدات اللازمة
from bs4 import BeautifulSoup,SoupStrainer
import requests
#  تحديد العنوان الهدف
url="https://en.wikipedia.org/wiki/Nike,_Inc."
# لكي لايتم اعتبارنا بريد عشوائي وبالتالي تجنب الحظر user agent وإضافة  Header  تعريف 
HEADERS = ({'User-Agent':
		'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36\
		(KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36',
			'Accept-Language': 'en-US, en;q=0.5'})
# GET ارسال طلب 
request = requests.get(url, headers= HEADERS)
# استخراج المحتويات
htmldata=request.content
# BeautifulSoup تحليل الملف الذي تم الحصول عليه من خلال 
soup = BeautifulSoup(htmldata, "lxml",
                     parse_only = SoupStrainer(
                       'span', class_ = 'mw-headline'))
print(soup.prettify())

الخرج:

"""
<!DOCTYPE html>
<span class="mw-headline" id="Origins_and_history">
 Origins and history
</span>
<span class="mw-headline" id="Acquisitions">
 Acquisitions
</span>
<span class="mw-headline" id="Finance">
 Finance
</span>
<span class="mw-headline" id="Logo_evolution">
 Logo evolution
</span>
<span class="mw-headline" id="Products">
 Products
</span>
<span class="mw-headline" id="Sports_apparel">
 Sports apparel
</span>
<span class="mw-headline" id="Street_fashions">
 Street fashions
</span>
<span class="mw-headline" id="Collectibles">
 Collectibles
</span>
<span class="mw-headline" id="Headquarters">
..
..
..
"""

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...