我正在尝试找到一种从网站导出 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 脚本自动执行此操作的方法...非常感谢任何帮助。
根据您的评论
@SergeyK - 这是包含数据的网站链接。我需要找到 下载“启动”部分下列出的 CSV 的方法 这个网址:browserstack.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')