pandas - 如何获取包含体育统计表中相应列描述的中间列?
问题描述
试图从这个网站上抓取一个数据框。到目前为止我有这个测试代码:
from time import sleep
from datetime import datetime
from selenium import webdriver
from selenium.webdriver.opera.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
import pandas as pd
from bs4 import BeautifulSoup
import urllib3
errors = []
season = []
my_url = ('http://www.sportal.de/fussball/bundesliga/spielernoten-bayern-muenchen-fc-schalke-04-1-spieltag-2020-2021-20138500')
option = Options()
driver = webdriver.Opera(options=option)
option.headless = False
driver.get(my_url)
driver.maximize_window()
WebDriverWait(driver,5).until(EC.visibility_of_element_located((
By.CSS_SELECTOR,'.qc-cmp2-footer .qc-cmp2-summary-buttons .css-k8o10q'))).click()
sleep(5)
elem = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((
By.LINK_TEXT,"Spielstatistik")))
driver.execute_script("arguments[0].click();", elem)
sleep(5)
dfs = pd.read_html(driver.page_source, index_col=["Vergleich"])
print(dfs)
输出是
[ FC Bayern München FC Schalke 04
Vergleich
100%0% 8 0, FC Bayern München FC Schalke 04
Vergleich
80.8%19.2% 21 5, FC Bayern München FC Schalke 04
Vergleich
92.3%7.7% 12 1, FC Bayern München FC Schalke 04
Vergleich
60%40% 3 2, FC Bayern München FC Schalke 04
Vergleich
66.7%33.3% 4 2, FC Bayern München FC Schalke 04
Vergleich
85%15% 17 3, FC Bayern München FC Schalke 04
Vergleich
66.7%33.3% 66.7% 33.3%, FC Bayern München FC Schalke 04
Vergleich
62.9%37.1% 62.9% 37.1%, FC Bayern München FC Schalke 04
Vergleich
49.3%50.4% 49.3% 50.4%, FC Bayern München FC Schalke 04
Vergleich
57.1%42.9% 57.1% 42.9%, FC Bayern München FC Schalke 04
Vergleich
52.2%47.8% 12 11, FC Bayern München FC Schalke 04
Vergleich
50%50% 3 3, FC Bayern München FC Schalke 04
Vergleich
81.8%18.2% 9 2, FC Bayern München FC Schalke 04
Vergleich
62.6%37.4% 604 361, FC Bayern München FC Schalke 04
Vergleich
31.8%68.2% 7.5% 16.1%, FC Bayern München FC Schalke 04
Vergleich
54.6%45.4% 89.2% 74.2%, FC Bayern München FC Schalke 04
Vergleich
82.73615635179154%61.904761904761905% 82.7% 61.9%, FC Bayern München FC Schalke 04
Vergleich
77.3%22.7% 17 5, FC Bayern München FC Schalke 04
Vergleich
100%0% 23.5% 0%, FC Bayern München FC Schalke 04
Vergleich
41.2%58.8% 14 20, FC Bayern München FC Schalke 04
Vergleich
58.8%41.2% 78.6% 55%, FC Bayern München FC Schalke 04
Vergleich
27.3%72.7% 6 16, FC Bayern München FC Schalke 04
Vergleich
47.8%52.2% 11 12, FC Bayern München FC Schalke 04
Vergleich
33.3%66.7% 1 2, FC Bayern München FC Schalke 04
Vergleich
50%50% 0 0, Manuel Neuer Manuel Neuer.1 Ralf Fährmann Ralf Fährmann.1
Vergleich
Position NaN TW TW NaN
Gespielte Minuten NaN 90 90 NaN, Manuel Neuer Ralf Fährmann
Vergleich
Gegentore 0 8
Torwartparaden 1 3
Fehler vor Gegentor 0 1
Abgefangene Flanken 0 0
weggefaustete Bälle 0 1, Manuel Neuer Ralf Fährmann
Vergleich
Gefoult worden 0 0
Fouls 0 0
Gelbe Karten 0 0
Platzverweise 0 0]
显然,表由 3 列的单行表组成,每个表都包含主队和客队的值。尽管 pandas 检索具有值的列,但它不用于包含描述的中间列。从 html 源代码中可以看出,这些值嵌套在不同的标签中
我想知道是否有办法获得这个“标签”列。提前致谢。
解决方案
推荐阅读
- json - 获取 JSONB 属性的计数
- angular7 - 使用 --prod 为应用程序提供 Angular 时出错
- vb.net - 使用空格分隔符计算外部文件中的单词
- vb.net - 读取文本文件的第二行并添加到 datagridview
- ruby-on-rails - 如何在序列化程序中传递不在 Rails 模型中的属性(ActiveRecord)?
- python - 2D Numpy 数组中每一行的列不洗牌
- c# - SqlCommand 不适用于 dbtype int 外键
- html - css 高度、最大高度、行高 VS。垂直对齐
- c++ - 如何在 GNUPLOT V 5.0 中使用不同颜色的条形图或块着色?
- c# - Convert c# code with inline delegate to vb.net