使用 BeautifulSoup 从 transfermarkt 页面上抓取数据

时间:2021-07-13 13:33:02

标签: python beautifulsoup

我正在尝试使用 BeautifulSoup 从 this page 中抓取表格并将其放入 DataFrame 中。 目前我已经尝试过

from bs4 import BeautifulSoup
import requests
import pandas as pd
r = requests.get("https://www.transfermarkt.co.uk/laliga/legionaereeinsaetze/wettbewerb/ES1/saison_id/2020/altersklasse/alle/option/spiele/plus/1", headers= {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:74.0) Gecko/20100101 Firefox/74.0"})
soup = BeautifulSoup(r.content, "html.parser")

results = soup.find_all("tbody")[1].find_all("a")
for result in results:
    print(result.text)

我得到的结果是

Athletic
27
26
1
99.9 %
0.1 %

CA Osasuna
28
22
6
84.5 %
15.5 %

SD Huesca
27
20
7
82.7 %
17.3 %
...

我曾尝试使用 print(result.text[0]) 对数据进行切片以尝试拆分结果,但在尝试将其转换为 DataFrame 方面没有成功。还有其他方法吗?

1 个答案:

答案 0 :(得分:0)

首先找到该表并使用 pd.read_html 将表解析为 str 它将作为列表返回并从中创建 df

results = soup.find("table",class_="items")
df=pd.read_html(str(results))[0]

df.drop(columns=['wappen',"% minutes foreign players"],inplace=True)
df.columns=['Club', 'Players used', 'Non-foreigners played',
       'Used foreign players', '% minutes non-foreigners',
       '% minutes foreign players']

图片: enter image description here