вернуть список элементов из тега tr - PullRequest
0 голосов
/ 21 октября 2018

У меня есть HTML-исходный код, который возвращается BeautifulSoup, используя код ниже.Я разместил образец "tr" кусков.Я хотел бы создать список диктовок, таких как пример «outputList» ниже, из фрагментов «tr» с аналогичным «id» для «ctl00_MainContent_subGBS_DataDetails_ctl01_trGBKItem». Часть «_ctl01» изменяется, остальная часть id остается прежней.

Я могу получить все «tr» чанки с аналогичным «id» в списке, используя:

tstsoup.find_all('tr',{'id':re.compile('ctl(\d\d)_MainContent_subGBS_DataDetails_ctl(\d\d)_trGBKItem')})

, но я не понял, как выбрать «имя»'и' Пометить 'не нужно

Я просматривал код в этом репо:

https://github.com/AlbanyCompSci/aeries-api

код:

tstsoup = BeautifulSoup(driver.page_source)

желаемый результат:

outputList=[{‘name’:’Math 3 Period 1’,’Mark’:’85.10’},{‘name’:’French II’,’Mark’:’93.01’}

выборка данных цоупа:

<tr id="ctl00_MainContent_subGBS_DataDetails_ctl01_trGBKItem">
<td class="DataLE"></td>
<td class="Data ac">
<input class="k-button" id="ctl00_MainContent_subGBS_DataDetails_ctl01_btnGradeDetails" name="ctl00$MainContent$subGBS$DataDetails$ctl01$btnGradeDetails" type="submit" value="Details"/>
</td>
<td class="Data al"><a class="link-gradebook-details" href="javascript:__doPostBack('ctl00$MainContent$subGBS$DataDetails$ctl01$lbtnCourseTitle','')" id="ctl00_MainContent_subGBS_DataDetails_ctl01_lbtnCourseTitle">Math 3 Period 1</a></td>
<td class="Data ac">Fall</td>
<td class="Data ac">1</td>
<td class="Data al">Missureli, A</td>
<td class="Data ac"><span style="display:block;" title="85.10">85.10</span></td>
<td class="Data ac"><span style="display:none;" title="85.10">85.10</span></td>
<td class="Data al"><span style="margin-left:48%">B</span></td>
<td class="Data ac" style="padding-top:3px"><img alt="DOWN" class="Clickable gradebook-trend-down" id="ctl00_MainContent_subGBS_DataDetails_ctl01_imgTrend" onclick="createScatterChart_8838138_F();" src="images/blank.gif" title="Forecasted value of 81.99% compared to the average of the last four overall scores 86.05%   Click for Details"/><br/><a class="gradebook-trend-click-hint" href="SubForms/#" id="ctl00_MainContent_subGBS_DataDetails_ctl01_gradebookTrendDetail" onclick="createScatterChart_8838138_F(); return false;">Details</a></td>
<td class="Data ac"><span id="ctl00_MainContent_subGBS_DataDetails_ctl01_lblNumMissing" style="color:Red;">3</span></td>
<td class="FixedData ac"><table border="0" class="ac" style="box-sizing: content-box; width: 100px;"><tbody><tr><td class="ac" style="width: 20%; border: none;" title="Monday - 10/15/2018">-</td><td class="ac" style="width: 20%; border: none;" title="Tuesday - 10/16/2018">-</td><td class="ac" style="width: 20%; border: none;" title="Wednesday - 10/17/2018">-</td><td class="ac" style="width: 20%; border: none;" title="Thursday - 10/18/2018">-</td><td class="ac" style="width: 20%; border: none;" title="Friday - 10/19/2018">-</td></tr></tbody></table></td>
<td class="Data ac"><span title="10/19/2018">Oct 19</span></td>
<td class="Data al"></td>
<td class="DataLER"></td>
</tr>
<tr id="ctl00_MainContent_subGBS_DataDetails_ctl02_trGBKItem">
<td class="DataLE"></td>
<td class="Data ac">
<input class="k-button" id="ctl00_MainContent_subGBS_DataDetails_ctl02_btnGradeDetails" name="ctl00$MainContent$subGBS$DataDetails$ctl02$btnGradeDetails" type="submit" value="Details"/>
</td>
<td class="Data al"><a class="link-gradebook-details" href="javascript:__doPostBack('ctl00$MainContent$subGBS$DataDetails$ctl02$lbtnCourseTitle','')" id="ctl00_MainContent_subGBS_DataDetails_ctl02_lbtnCourseTitle">French II</a></td>
<td class="Data ac">Fall</td>
<td class="Data ac">2</td>
<td class="Data al">Rauw, C</td>
<td class="Data ac"><span style="display:block;" title="93.01">93.01</span></td>
<td class="Data ac"><span style="display:none;" title="93.01">93.01</span></td>
<td class="Data al"><span style="margin-left:48%">A-</span></td>
<td class="Data ac" style="padding-top:3px"><img alt="SAME" class="Clickable gradebook-trend-same" id="ctl00_MainContent_subGBS_DataDetails_ctl02_imgTrend" onclick="createScatterChart_7185099_F();" src="images/blank.gif" title="Forecasted value of 94.05% compared to the average of the last four overall scores 93.19%   Click for Details"/><br/><a class="gradebook-trend-click-hint" href="SubForms/#" id="ctl00_MainContent_subGBS_DataDetails_ctl02_gradebookTrendDetail" onclick="createScatterChart_7185099_F(); return false;">Details</a></td>
<td class="Data ac"><span id="ctl00_MainContent_subGBS_DataDetails_ctl02_lblNumMissing">0</span></td>
<td class="FixedData ac"><table border="0" class="ac" style="box-sizing: content-box; width: 100px;"><tbody><tr><td class="ac" style="width: 20%; border: none;" title="Monday - 10/15/2018">-</td><td class="ac" style="width: 20%; border: none;" title="Tuesday - 10/16/2018">-</td><td class="ac" style="width: 20%; border: none;" title="Wednesday - 10/17/2018">-</td><td class="ac" style="width: 20%; border: none;" title="Thursday - 10/18/2018">-</td><td class="ac" style="width: 20%; border: none;" title="Friday - 10/19/2018">-</td></tr></tbody></table></td>
<td class="Data ac"><span title="10/18/2018">Oct 18</span></td>
<td class="Data al"></td>
<td class="DataLER"></td>
</tr>

1 Ответ

0 голосов
/ 24 октября 2018

Код ниже, кажется, делает трюк.

Код:

tst_tr=tstsoup.find_all('tr',{'id':re.compile('ctl(\d\d)_MainContent_subGBS_DataDetails_ctl(\d\d)_trGBKItem')})


def grbk(src_tr):

    std_grbk={'name':src_tr.find_all('td')[2].get_text(),
         'Mark':src_tr.find_all('td')[6].get_text()}

    return std_grbk



tst_stuff=[]

for i in range(len(tst_tr)):
    tst_stuff.append(grbk(tst_tr[i]))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...