【问题标题】:Scraping data off transfermarkt page using BeautifulSoup使用 BeautifulSoup 从 transfermarkt 页面刮取数据
【发布时间】:2021-07-13 13:33:02
【问题描述】:

我正在尝试使用 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。还有其他方法吗?

【问题讨论】:

  • 能否将您用于拆分结果的代码添加到您的答案中?

标签: python beautifulsoup


【解决方案1】:

首先找到该表并使用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']

图片:

【讨论】:

    猜你喜欢
    • 2014-03-08
    • 1970-01-01
    • 2017-10-14
    • 1970-01-01
    • 2016-12-16
    • 1970-01-01
    • 1970-01-01
    • 2019-10-24
    • 1970-01-01
    相关资源
    最近更新 更多