إياد أحمد نشر 29 نوفمبر 2021 أرسل تقرير نشر 29 نوفمبر 2021 (معدل) كتبت الكود التالي للحصول على البيانات من جدول ب ID محدد: from bs4 import BeautifulSoup hDoc = br.response() soup = BeautifulSoup(hDoc.read(),'html') table = soup.find(lambda tag: tag.name=='table' and tag.has_key('id') and tag['id']=="HistoryData1") rows = table.findAll(lambda tag: tag.name=='tr') وهذا هو المقطع من كود HTML: <table cellspacing="0" cellpadding="3" border="0" id="HistoryData1" style="width:100%;border-collapse:collapse;"> <tr class="gridHeader" valign="top"> <td class="titleGridRegNoB" align="center" valign="top"><span dir=RTL>ballov</span></td> <td class="titleGridReg" align="center" valign="top">Grand</td> <td class="titleGridReg" align="center" valign="top">andera</td> <td class="titleGridReg" align="center" valign="top">colofisiaky</td> <td class="titleGridReg" align="center" valign="top">tochy</td><td class="titleGridReg" align="center" valign="top"><span dir="rtl"> (laesd)</span></td> <td class="titleGridReg" align="center" valign="top">שער נעילה מתואם</td><td class="titleGridReg" align="center" valign="top">kagt</td> </tr> <tr onmouseover="this.style.backgroundColor='#FDF1D7'" onmouseout="this.style.backgroundColor='#ffffff'"> لكن عندما أحاول طباعة الجدول أحصل على None؟ print (table) # None تم التعديل في 29 نوفمبر 2021 بواسطة إياد أحمد 2 اقتباس
0 Ali Haidar Ahmad نشر 29 نوفمبر 2021 أرسل تقرير نشر 29 نوفمبر 2021 نظرًا لأنك تعمل باستخدام بيانات UTF-8 ، فأنت بحاجة إلى تعيين السلسلة كسلسلة Unicode أي فقط هكذا: html=u""" <table cellspacing="0" cellpadding="3" border="0" id="ctl00_SPWebPartManager1_g_c001c0d9_0cb8_4b0f_b75a_7cc3b6f7d790_ctl00_HistoryData1_gridHistoryData_DataGrid1" style="width:100%;border-collapse:collapse;"> <tr class="gridHeader" valign="top"> <td class="titleGridRegNoB" align="center" valign="top"><span dir=RTL>ballov</span></td> <td class="titleGridReg" align="center" valign="top">Grand</td> <td class="titleGridReg" align="center" valign="top">andera</td> <td class="titleGridReg" align="center" valign="top">colofisiaky</td> <td class="titleGridReg" align="center" valign="top">tochy</td><td class="titleGridReg" align="center" valign="top"><span dir="rtl"> (laesd)</span></td> <td class="titleGridReg" align="center" valign="top">שער נעילה מתואם</td><td class="titleGridReg" align="center" valign="top">kagt</td> </tr> <tr onmouseover="this.style.backgroundColor='#FDF1D7'" onmouseout="this.style.backgroundColor='#ffffff'"> """ أيضاً للبحث عن الجدول بالمعرّف المحدد نكتب اسم الوسم ثم اتبعه بالمعرفّ كما يلي: table = soup.find('table', id="HistoryData1") وبالنسبة للأسطر فقط استدعي الدالة findall من كائن table وحدد لها الوسم tr rows = table.findAll('tr') وبالنسبة للترميز، حاول فك ترميزها من utf-8 ، وأعد ترميزها، كما يلي: html = br.response().read().decode('utf-8') soup = BeautifulSoup(html.encode('utf-8')) اقتباس
0 سامح أشرف نشر 29 نوفمبر 2021 أرسل تقرير نشر 29 نوفمبر 2021 بدلًا من إستعمال التابع findAll و التابع find يمكنك أن تستعمل التابع select والتابع select_one للقيام بهذه المهمة، على النحو التالي: from bs4 import BeautifulSoup content = """<table cellspacing="0" cellpadding="3" border="0" id="HistoryData1" style="width:100%;border-collapse:collapse;"> <tr class="gridHeader" valign="top"> <td class="titleGridRegNoB" align="center" valign="top"><span dir=RTL>ballov</span></td> <td class="titleGridReg" align="center" valign="top">Grand</td> <td class="titleGridReg" align="center" valign="top">andera</td> <td class="titleGridReg" align="center" valign="top">colofisiaky</td> <td class="titleGridReg" align="center" valign="top">tochy</td><td class="titleGridReg" align="center" valign="top"><span dir="rtl"> (laesd)</span></td> <td class="titleGridReg" align="center" valign="top">שער נעילה מתואם</td><td class="titleGridReg" align="center" valign="top">kagt</td> </tr> <tr onmouseover="this.style.backgroundColor='#FDF1D7'" onmouseout="this.style.backgroundColor='#ffffff'"> </tr> </table> """ soup = BeautifulSoup(content, features='lxml') table = soup.select_one('table#HistoryData1') print(table) rows = table.select('tr') print(rows) لاحظ كيف تم إستعمال التابع select_one للحصول على العنصر table الذي يحمل المعرف HistoryData1 ثم تم إستعمال هذا الجدول للبحث عن كل عناصر tr التي يحتويها من خلال التابع select والذي يقوم بإرجاع قائمة من العناصر. اقتباس
السؤال
إياد أحمد
كتبت الكود التالي للحصول على البيانات من جدول ب ID محدد:
وهذا هو المقطع من كود HTML:
لكن عندما أحاول طباعة الجدول أحصل على None؟
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.