Скребковый стол Python

Если кто-то из вас использует продукт Intellij, решение для этого следующее:

  1. Перейдите в раздел «Настройки»> «Редактор»> «Стиль кода»
  2. здесь для выбора типа файла, связанного с вашей проблемой. Но, скорее всего, вам нужно выбрать Other File Types.
  3. В открывшейся вкладке отметьте флажок для Use tab character и будьте осторожны, значения Tab size и Indent должны быть 4.
0
задан Maaz 6 March 2019 в 17:08
поделиться

2 ответа

Вы можете использовать понимание вложенного списка, чтобы правильно преобразовать таблицу в список списков, который затем можно легко записать в файл 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.
0
ответ дан Ajax1234 6 March 2019 в 17:08
поделиться

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]
0
ответ дан chitown88 6 March 2019 в 17:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: