Python - загрузка данных приложения / csv с веб-страницы - PullRequest
0 голосов
/ 02 апреля 2019

Я использую библиотеку requests для извлечения определенной веб-страницы, которая содержит ссылку для загрузки данных в csv.Ссылка имеет формат

<a class="csv-download" download="data.csv" target"_blank"="" style="cursor:pointer" href="data:application/csv;charset=utf-8,%22Date%22%2C%22Volume%2FLength%22%2C%22Length%2FWidth%22%2C%22Weight%20gm%22%0A%2208-Jan-2018%22%2C%22%20%20%20%20%20%20%2023.19%22%2C%22%20%20%20%20%20%20%20%202.13%22%2C%22%20%20%20%20%20%20%20%201.32%22%0A" target="_blank">Download csv</a>

Эта ссылка при нажатии из браузера загружает данные в файл download.csv

Мне нужно извлечь это какCSV и сохранить в файл.Я использую BeautifulSoup в проекте для разбора файлов HTML.

Как мне загрузить файл csv из Python?

Вот что у меня есть

import requests
from bs4 import BeautifulSoup as BS

r = requests.get(url)
soup = BS(r.text)
target_elt = soup.find('a', "csv-download")
# TODO - download the csv data

1 Ответ

0 голосов
/ 03 апреля 2019

Поскольку содержимое нужного файла хранится в атрибуте href target_elt, начиная с запятой, вы можете разделить содержимое этого атрибута на первую запятую, а затем декодировать часть после этой первой запятой.:

import urllib
import requests
from bs4 import BeautifulSoup as BS

r = requests.get(url)
soup = BS(r.text)
target_elt = soup.find('a', "csv-download")

header, encoded = target_elt.attrs["href"].split(",", 1)
data = urllib.unquote(encoded)
with open("data.csv", "w") as fp:
 fp.write(data)  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...