Извлечение данных из нескольких таблиц с использованием Python и красивого супа - PullRequest
0 голосов
/ 07 октября 2018
<div class="row margin_30">
<div class="col-md-12 col-sm-12 col-xs-12 col-lg-12">
<div class="table-responsive table-border-radius">
<table class="table  table-hover result-table-new1 " style="margin:0">
<thead class="">
<tr class="">
<th style="text-align:center;">Pl</th>
<th>H.No</th>
<th>Horse/Pedigree</th>
<th>Desc</th>
<th>Trainer</th>
<th>Jockey</th>
<th>Wt</th>
<th>Al</th>
<th>Dr</th>
<th>Sh</th>
<th>Won By</th>
<th>Dist Win</th>
<th>Rtg</th>
<th>Odds</th>
<th>Time</th>
</tr>
</thead>
<tbody class="">
<tr class="dividend_tr"  >
<td>1 </td>
<td style="text-align: center;">7 </td>
<td class="race_card_td"><h5 style="font-size:16px">
<a href="http://www.indiarace.com/Home/horseStatistics/55234/SILKEN 
 STRIKER">
 SILKEN STRIKER </a></h5>
<h6 class="margin_remove">Sussex(GB)-Flying Rani </h6>
</td>
<td>
4y b g </td>
<td>
Irfan Ghatala </td>
<td>
 Anjar Alam </td>
<td>
 56 </td>
<td>
 - </td>
<td>
 6 </td>
 <td>
 A </td>
<td>
5 1/2 </td>
<td>
</td>
<td>
12 </td>
<td>
</td>
<td>
1:14.57 </td>
</tr>
<tr class="dividend_tr"  >
<td>
2 </td>
<td style="text-align: center;">
5 </td>
<td class="race_card_td">
<h5 style="font-size:16px">
<a href="http://www.indiarace.com/Home/horseStatistics/55737/ULTIMATE 
POWER">
ULTIMATE POWER </a>
</h5>
<h6 class="margin_remove">
Epicentre(USA)-Methodical </h6>
</td>
<td>
4y b g </td>
<td>
V Lokanath </td>
<td>
Darshan R N </td>
<td>
57 </td>
<td>
-1 </td>
<td>
3 </td>
<td>
A </td>
<td>
5 </td>
<td>
5.5 </td>
<td>
14 </td>
<td>
</td>
<td>
1:15.47 </td>
</tr>
</tbody>
</table>
</div>

Я хочу следующий вывод с использованием Beautiful soup и хочу сохранить его в CSV-файле.Фактическая страница [http://www.indiarace.com/Home/racingCenterEvent?venueId=3&event_date=2018-08-10&race_type=RESULTS] имеет несколько таблиц и много строк.Кроме того, мне нужно написать функцию для получения данных с разных страниц.

[Результат] [1]

 [1]: https://i.stack.imgur.com/4LYt8.jpg

Любая помощь будет очень полезна.

1 Ответ

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

Это довольно просто, вам нужно найти все таблицы, а затем повторить tr и td согласно вашему требованию.Вы можете использовать панды, чтобы сохранить очищенные данные.Я проанализировал таблицы для вас (все остальное, что вам нужно сделать) ... проверьте код ниже.

import requests
from bs4 import BeautifulSoup

url = 'http://www.indiarace.com/Home/racingCenterEvent?venueId=3&event_date=2018-08-10&race_type=RESULTS'
html = requests.get(url)
soup = BeautifulSoup(html.content, 'html.parser')
table = soup.find_all('table', attrs={
    'class':'result-table-new1'})
for i in table:
    tr = i.find_all('tr')
    for td in tr:
        print(td.text.replace('\n', ' '))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...