Сначала необходимо прочитать html в фрейм данных pandas, используя read_ html, а затем использовать to_csv
для записи в файл. Вот пример:
import requests
from bs4 import BeautifulSoup
import pandas as pd
link = ("https://sofifa.com/team/1/arsenal/?&showCol%5B%5D=ae&showCol%5B%5D=hi&showCol%5B%5D=le&showCol%5B%5D=vl&showCol%5B%5D=wg&showCol%5B%5D=rc")
get_text = requests.get(link)
soup = BeautifulSoup(get_text.content, "lxml")
table = soup.find("table", {"class":"table table-hover persist-area"})
# produces a list of dataframes from the html, see docs for more options
dfs = pd.read_html(str(table))
dfs[0].to_csv("Arsenal_players.csv")
Метод read_html
имеет довольно много опций, которые могут изменить поведение. Вы также можете использовать его для непосредственного чтения своей ссылки, вместо того, чтобы сначала использовать запросы / BeautifulSoup (он может сделать это под капотом).
Это может выглядеть примерно так, но это не проверено, поскольку эта ссылка дает 403 запрещено, когда я делаю это (возможно, они блокируются на основе пользовательского агента):
dfs = pd.read_html(link, attrs={"class":"table table-hover persist-area"})
РЕДАКТИРОВАТЬ: так как read_ html не позволяет вам указать пользовательский агент, я считаю, что в конечном итоге это будет самый краткий способ для этой конкретной ссылки:
dfs = pd.read_html(
requests.get(link).text,
attrs={"class":"table table-hover persist-area"}
)
dfs[0].to_csv("Arsenal_players.csv")