Если кто-то из вас использует продукт Intellij, решение для этого следующее:
Other File Types
. Use tab character
и будьте осторожны, значения Tab size
и Indent
должны быть 4. Вы можете использовать понимание вложенного списка, чтобы правильно преобразовать таблицу в список списков, который затем можно легко записать в файл CSV:
import csv, requests, re
from bs4 import BeautifulSoup as soup
d = soup(requests.get('https://www.totalcorner.com/match/schedule/20190305').text, 'html.parser')
table = d.find('table', {'id':'inplay_match_table'})
_headers, _data = [i.text for i in table.find_all('th')], [[i.text for i in b.find_all('td')] for b in table.find_all('tr')[1:]]
headers, data = [re.sub('\n+', '', i) for i in _headers if i], [list(filter(None, [re.sub('\n+', '', i) for i in b if i])) for b in _data[2:]]
with open('totalcorner_results.csv', 'w') as f:
write = csv.writer(f)
write.writerows([headers, *data])
Вывод (Лучшие восемь результатов из-за характера SO) предел):
League,Time,Home,Score,Away,Handicap,Corner,Goal Line,Tips,Dangerous Attack,Shots,Live Events,Analysis
Mexico Liga MX Femenil,00:00,Full,1Toluca Women,1 - 1,Club America Women21,+0.5,4 - 4(2-3),2.75 1.25 ,6.7-13.2,81 - 6037 - 33,20 - 811 - 4,C.O.L.
Argentina Nacional B,00:05,Full,3Sarmiento,1 - 1,CD Moron5,-0.75,5 - 3(4-2),2.0 0.75 ,62 - 6232 - 23,11 - 108 - 4,C.O.L.
Ecuador Campeonato Nacional,00:15,Full,[10]Universidad Catolica Del Ecuador,6 - 0,Fuerza Amarilla SC[13]1,-1.25,11 - 0(7-0),2.5 1.25 ,88 - 2243 - 10,23 - 512 - 4,C.O.L.
Argentina Primera Division,00:30,Full,5CA Aldosivi,0 - 1,Defensa y Justicia4,+0.25,3 - 6(1-2),1.75 0.75 ,Corner Over6.6-12.7,82 - 8836 - 46,13 - 96 - 6,C.O.L.
Peru Primera Division,01:00,Full,2[14]Sport Huancayo,0 - 3,Academia Deportiva Cantolao[17]2,-1.25,8 - 2(2-0),2.75 1.0 ,7.3-13.9,106 - 4547 - 19,12 - 56 - 1,C.O.L.
Colombia Primera A,01:00,Full,12Atletico Huila,1 - 2,Alianza Petrolera31,-0.25,3 - 4(1-4),2.0 0.75 ,5.6-12.3,47 - 5017 - 31,6 - 82 - 3,C.O.L.
Mexico Liga MX Femenil,01:00,Full,2Chivas Guadalajara Women,1 - 2,Atlas Women2,-0.25,2 - 2(0-0),2.5 1.0 ,6.1-11.8,49 - 7118 - 32,6 - 143 - 8,C.O.L.
Pandas - удобный способ анализа тегов <table>
(в нем используется BeautifulSoup под капотом).
Обычно вы могли бы просто сделать pd.read_html(url)
, но вам нужно было бы делать запросы на использование здесь.
import pandas as pd
import requests
url = 'https://www.totalcorner.com/match/schedule/20190305'
response = requests.get(url)
tables = pd.read_html(response.text)
table = tables[0]
table = table.dropna(how='all', axis=0)
table = table.dropna(how='all', axis=1)
Выход:
print (table)
League ... Analysis
1 Mexico Liga MX Femenil ... C. O. L.
2 Argentina Nacional B ... C. O. L.
3 Ecuador Campeonato Nacional ... C. O. L.
4 Argentina Primera Division ... C. O. L.
5 Peru Primera Division ... C. O. L.
6 Colombia Primera A ... C. O. L.
7 Mexico Liga MX Femenil ... C. O. L.
8 Jamaica Premier League ... C. O. L.
9 Mexico Clausura ... C. O. L.
10 Mexico Liga MX Femenil ... C. O. L.
11 Mexico Liga MX Femenil ... C. O. L.
12 Bangladesh Championship League ... C. O. L.
13 India Mumbai Super Division ... C. O. L.
14 Womens International ... C. O. L.
15 AFC Champions League ... C. O. L.
16 Indonesia Cup ... C. O. L.
17 India Mumbai Super Division ... C. O. L.
18 Australia South Australia State League 1 ... C. O. L.
19 Bangladesh Championship League ... C. O. L.
20 Australia Queensland Premier League Women ... C. O. L.
21 Australia South Australia State League 1 ... C. O. L.
22 AFC Champions League ... C. O. L.
23 Vietnam V-League ... C. O. L.
24 Vietnam V-League ... C. O. L.
25 India I-League 2nd Division ... C. O. L.
26 World Club Friendlies ... C. O. L.
27 AFC Champions League ... C. O. L.
28 Algeria Youth League ... C. O. L.
29 Iran Div 2 ... C. O. L.
30 Iran Div 2 ... C. O. L.
.. ... ... ...
135 England National League South ... C. O. L.
136 England National League South ... C. O. L.
137 England National League South ... C. O. L.
138 England Southern Premier League Central ... C. O. L.
139 England Southern Premier League South ... C. O. L.
140 England Southern Premier League South ... C. O. L.
141 England Isthmian Premier Division ... C. O. L.
142 England Isthmian Premier Division ... C. O. L.
143 England League 1 ... C. O. L.
144 England Northern League Division One ... C. O. L.
145 England Northern League Division One ... C. O. L.
146 Republic of Ireland League Cup ... C. O. L.
147 England Isthmian Division One North ... C. O. L.
148 Republic of Ireland League Cup ... C. O. L.
149 Northern Ireland Mid Ulster Cup ... C. O. L.
150 UEFA Champions League ... C. O. L.
151 UEFA Champions League ... C. O. L.
152 Argentina Primera B Metropolitana ... C. O. L.
153 Argentina Primera C Metropolitana ... C. O. L.
154 Argentina Primera D Metropolitana ... C. O. L.
155 Iceland U19 Cup ... C. O. L.
156 Republic of Ireland Leinster Senior League ... C. O. L.
157 Republic of Ireland Munster Senior Cup ... C. O. L.
158 Argentina Cup ... C. O. L.
159 Copa Libertadores ... C. O. L.
160 Copa Libertadores ... C. O. L.
161 Copa Libertadores ... C. O. L.
162 Womens International ... C. O. L.
163 Argentina Torneo Regional Amateur ... C. O. L.
164 Mexico Liga de Ascenso Clausura ... C. O. L.
[164 rows x 13 columns]