Экспорт таблицы Excel с веб-сайта — Python

Я пытаюсь найти способ экспортировать электронную таблицу Microsoft Excel (.xlsx) с веб-сайта и сохранить ее локально (на рабочем столе) или в базе данных. Я могу проанализировать URL-адрес с табличным содержимым и отобразить/записать в файл, но мне нужно определить способ получения содержимого электронной таблицы, требующего нажатия кнопки для загрузки данных. Что еще более важно, мне нужно иметь возможность извлекать данные электронных таблиц, встроенные в несколько отдельных страниц, как они отображаются на веб-странице. Ниже приведен пример сценария, который отображает табличные данные с веб-сайта.

import urllib3
from bs4 import BeautifulSoup

url = 'https://www.runnersworld.com/races-places/a20823734/these-are-the-worlds-fastest-marathoners-and-marathon-courses/'

http = urllib3.PoolManager()
response = http.request('GET', url)
soup = BeautifulSoup(response.data.decode('utf-8'))
print(soup)  

Я проверил инструмент Javascript, который является эквивалентом ручного экспорта данных на веб-сайт с помощью нажатия кнопки, но мне нужно найти способ автоматизировать это с помощью сценария Python... любая помощь будет очень признательна.

если вам нужно щелкнуть что-то, вам нужно использовать инструмент автоматизации браузера, такой как Selenium, Puppeteer или Playwright.

Bindestrich 16.07.2024 23:35

@Bindestrich - Спасибо за предложение, проведя еще несколько исследований, выяснилось, что Selenium и веб-драйвер могут быть особенно полезны. Я буду продолжать копаться в этом больше, но это помогает!

mdl518 16.07.2024 23:58

где кнопка скачать таблицу?

Sergey K 17.07.2024 08:01

@SergeyK - я не могу предоставить точный URL-адрес, поскольку для этого требуется определенный сертификат, но я просто пытаюсь продемонстрировать, как нажать на опцию, чтобы загрузить файл/хранилище локально. В качестве примера, вот ссылка для сохранения/загрузки файла .mp4 нажатием кнопки (online-video-cutter.com/crop-video), поэтому я просто пытаюсь настроить использование Python для сохранения данных. хранятся на веб-сайтах.

mdl518 17.07.2024 18:25

@ mdl518 мне нужны эти данные, чтобы помочь тебе в твоем вопросе, мб эта кнопка после аутентификации

Sergey K 18.07.2024 21:18

@SergeyK - Вот ссылка на сайт с данными. Мне нужно найти способ загрузить CSV-файл, указанный в разделе «Запуск» по этому URL-адресу: Browsestack.com/test-on-the-right-mobile-devices

mdl518 22.07.2024 16:04
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
6
72
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Судя по вашему комментарию

@SergeyK - Вот ссылка на сайт с данными. Мне нужно найти способ загрузки CSV-файла, указанный в разделе «Запуск» этот URL: Browsestack.com/test-on-the-right-mobile-devices

На упомянутом вами сайте есть три кнопки загрузки. Да, они одинаковые, и будет загружен только один файл, но в качестве примера.

import requests
from bs4 import BeautifulSoup
import urllib.parse


response = requests.get('https://www.browserstack.com/test-on-the-right-mobile-devices')
for csv_href in BeautifulSoup(response.text, 'lxml').find_all('div', class_='download-csv'):
    link = 'https://www.browserstack.com/' + csv_href.findNext('a').get('href')
    file_name = urllib.parse.unquote(link).replace(" ", "").split('/')[-1]
    data = requests.get(link)
    with open(file_name, 'wb') as file:
        print(f'{file_name} saved from {link}')
        file.write(data.content)

ВЫХОД

BrowserStack-Listofdevicestoteston.csv saved from https://www.browserstack.com/downloads/BrowserStack%20-%20List%20of%20devices%20to%20test%20on.csv
BrowserStack-Listofdevicestoteston.csv saved from https://www.browserstack.com/downloads/BrowserStack%20-%20List%20of%20devices%20to%20test%20on.csv
BrowserStack-Listofdevicestoteston.csv saved from https://www.browserstack.com/downloads/BrowserStack%20-%20List%20of%20devices%20to%20test%20on.csv

Или просто раздел «Запуск» без цикла:

soup = BeautifulSoup(response.text, 'lxml').find('div', {'data-trigger': 'startingup'})
link = 'https://www.browserstack.com/' + soup.findNext('a').get('href')

@SergeiK — Это решение отлично работает! Более того, мне нужно расширить эту концепцию, чтобы при нажатии кнопки открывалось всплывающее окно с тремя опциями, включая одну «Экспорт электронной таблицы», которая предлагает загрузку. Можно ли расширить сценарий до этого всплывающего окна, предоставляющего возможность загрузки данных? В противном случае я соглашусь с вашим ответом как с правильным решением, еще раз спасибо!

mdl518 23.07.2024 22:27

@mdl518 mdl518 Мне нужно заглянуть на сайт и рассказать, как это сделать правильно, я не могу просто сказать: «Да, скрипт можно расширить». Мб без селениума нельзя, или API, или еще что…

Sergey K 24.07.2024 07:56

@SergeiK - я не могу предоставить точный URL-адрес, поскольку для доступа к странице в Интернете требуется специальный сертификат, но я могу попытаться найти аналогичный веб-сайт, который требует той же функциональности для нажатия кнопки, чтобы вызвать другое всплывающее окно. для загрузки данных. В остальном я согласился с вашим ответом как с правильным решением для моего первоначального сообщения, еще раз спасибо!

mdl518 25.07.2024 13:16

@ mdl518 предложите подобное, я добавляю решение к этому ответу

Sergey K 25.07.2024 13:19

Другие вопросы по теме