Как сохранить очищенные данные в csv unsing pandas - PullRequest
0 голосов
/ 04 марта 2020

Я хочу сохранить мои очищенные данные в CSV-файл, используя pandas. Но я продолжаю получать ошибку.

Вот мой код:

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"})
table1 = table.get_text()

table1.to_csv("Arsenal_players.csv")

Ответы [ 2 ]

1 голос
/ 04 марта 2020

Сначала необходимо прочитать 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")
1 голос
/ 04 марта 2020

Вам нужно ввести больше объяснений, прежде чем задавать вопрос, такой как тип ошибки, которую вы получите, это будет более полезно, чтобы дать ответ. В любом случае я запускаю ваш код и вижу ошибку, как и ожидалось. Ну, теперь переменная table1 состоит только из строк из-за

table1 = table.get_text()

, поэтому в вашей ситуации нет функции для ввода всех данных в csv, но вы можете найти помощь здесь . Но помните, что в следующий раз будьте точны в своей проблеме.

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