очистка веб-страниц: как вычистить одно тело таблицы из множества тел таблицы? - PullRequest
0 голосов
/ 30 мая 2019

Я пытаюсь почистить определенную таблицу на сайте - http://stats.espncricinfo.com/ci/engine/player/35320.html?class=2;template=results;type=batting

Теперь есть несколько таблиц, которые неотличимы друг от друга. И я хочу очистить только один конкретный стол оттуда. Как мне это сделать?

Я пытался использовать функцию find_all(). Но это только перечисляет ВСЕ теги <tbody>.

Я хочу очистить только выделенное тело таблицы.

Screenshot-from-2019-05-31-01-54-52.png

1 Ответ

0 голосов
/ 30 мая 2019

Он помечен tbody, и вы можете использовать следующий селектор css с bs4. Затем оберните тегами table и перейдите к пандам, чтобы хорошо печатать. Я использую BS4 4.7.1

Вы также можете использовать table = soup.select('tbody:contains(year)').

Python:

from bs4 import BeautifulSoup as bs
import requests
import pandas as pd

r = requests.get('http://stats.espncricinfo.com/ci/engine/player/35320.html?class=2;template=results;type=batting')
soup = bs(r.content, 'lxml')
table = soup.select('tbody:nth-child(7)')
headers = [item.text for item in soup.select('.headlinks th')]
df = pd.read_html('<table>' + str(table) + '</table>')[0]
df.columns = headers
df = df.dropna(how = 'all', axis=0).drop(['Span',''], axis=1)
print(df)

df.head ()

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...