إياد أحمد نشر 29 نوفمبر 2021 أرسل تقرير نشر 29 نوفمبر 2021 أقوم باستخراج بعض البيانات من إحدى صفحات الويب، وقد قمت بتحليل إحدى أكواد ال HTML بالشكل التالي: spage = bs(urlopen(URL)) b = spage.body.find('div', 'class'='badges') print(b) # حصلت على الخرج التالي: """ <span> <span title="9 gold badges"><span class="badge1"></span> <span class="badgecount">9</span></span> <span title="38 silver badges"><span class="badge2"></span> <span class="badgecount">38</span></span><span title="56 bronze badges"><span class="badge3"></span> <span class="badgecount">56</span></span></span> """ الآن أريد استخراج 56 bronze badges و 9 gold badges و 38 silver badges منها؟ 2 اقتباس
0 Ali Haidar Ahmad نشر 29 نوفمبر 2021 أرسل تقرير نشر 29 نوفمبر 2021 تابع في الكود التالي: #استيراد الوحدة from bs4 import BeautifulSoup # html كود htmlDoc = """<div class="badges"> <span> <span title="9 gold badges"><span class="badge1"></span><span class="badgecount">9</span></span> <span title="38 silver badges"><span class="badge2"></span><span class="badgecount">38</span></span> <span title="56 bronze badges"><span class="badge3"></span><span class="badgecount">56</span></span> </span> </div>""" # تحليله soup = BeautifulSoup(htmlDoc,'lxml') # ومن خلاله نستخدم body نقوم بالوصول إلى الوسم soup الآن من خلال كائن # badges ذو الكلاس div للإمساك بال find الدالة b = soup.body.find('div', attrs={'class': 'badges'}) # الموجودة ضمنه span الآن من خلاله نقوم بإيجاد كل ال spans=b.span.find_all('span', recursive=False) # الآن نقوم بالمرور عليها واحداً تلو الآخر for span in spans : # ضمنها والذي يحوي على المطلوب title طباعة محتوى ال print (span.attrs['title']) """ 9 gold badges 38 silver badges 56 bronze badges """ اقتباس
0 سامح أشرف نشر 29 نوفمبر 2021 أرسل تقرير نشر 29 نوفمبر 2021 يمكنك أن تقوم بالمرور على كل عناصر span الموجودة في المستند والتأكد من إحتوائه على الخاصية title، وفي حالة وجود هذه الخاصية سيتم إضافة قيمتها إلى قائمة badges: from bs4 import BeautifulSoup content = """ <span> <span title="9 gold badges"> <span class="badge1"></span> <span class="badgecount">9</span> </span> <span title="38 silver badges"> <span class="badge2"></span> <span class="badgecount">38</span> </span> <span title="56 bronze badges"> <span class="badge3"></span> <span class="badgecount">56</span> </span> </span> """ soup = BeautifulSoup(content, features='lxml') # هنا سيم تخزين كل القيم المستخرجه من عناصر span badges = [] # نقوم بتحديد كل عناصر span والمرور عليهم span_elements = soup.select('span') for span in span_elements: # في حالة وجود الخاصية title if span.has_attr('title'): badges.append(span.get('title')) print(badges) # ['9 gold badges', '38 silver badges', '56 bronze badges'] لاحظ أن كل القيم تنتهي بالكلمة "badges"، وبالتالي يمكنك أن تتأكد من صحة القيمة الموجودة في الخاصية title، على النحو التالي: for span in span_elements: if span.has_attr('title'): title = span.get('title') if title.lower().endswith('badges'): badges.append(title) print(badges) # ['9 gold badges', '38 silver badges', '56 bronze badges'] اقتباس
السؤال
إياد أحمد
أقوم باستخراج بعض البيانات من إحدى صفحات الويب، وقد قمت بتحليل إحدى أكواد ال HTML بالشكل التالي:
الآن أريد استخراج 56 bronze badges و 9 gold badges و 38 silver badges منها؟
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.