Python 使用Chrome WebDriver下载文件

Python 使用Chrome WebDriver下载文件,python,selenium,selenium-webdriver,selenium-chromedriver,Python,Selenium,Selenium Webdriver,Selenium Chromedriver,我有一些数据需要从URL获取,但唯一的方法是通过下载。下面的代码适用于特定网站的某些实例,但其他时候它会打开浏览器,导航到该网站,然后什么也不做。我尝试过WebDriverWait的各种实例,但似乎并不重要。我希望有人能帮我找出问题所在,因为我几乎迷路了 from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDr

我有一些数据需要从URL获取,但唯一的方法是通过下载。下面的代码适用于特定网站的某些实例,但其他时候它会打开浏览器,导航到该网站,然后什么也不做。我尝试过WebDriverWait的各种实例,但似乎并不重要。我希望有人能帮我找出问题所在,因为我几乎迷路了

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException

bs_url = "https://baseballsavant.mlb.com/statcast_search?hfPT=&hfAB=&hfBBT=&hfPR=&hfZ=&stadium=&hfBBL=&hfNewZones=&hfGT=R%7C&hfC=&hfSea=2016%7C&hfSit=&player_type=batter&hfOuts=&opponent=&pitcher_throws=L&batter_stands=&hfSA=&game_date_gt=&game_date_lt=&team=&position=&hfRO=&home_road=&hfFlag=&metric_1=&hfInn=&min_pitches=0&min_results=0&group_by=name&sort_col=pitches&player_event_sort=h_launch_speed&sort_order=desc&min_abs=0#results"

driver = webdriver.Chrome()
driver.wait = WebDriverWait(driver, 5)
driver.get(bs_url)
driver.wait = WebDriverWait(driver, 5)
Stats = driver.find_element_by_id("table_all_pid_").click()
driver.wait = WebDriverWait(driver, 5)

driver.quit()
HTML:

%的音高

要单击标题为“下载结果逗号分隔值文件”的元素,可以使用以下代码块:

  • css\u选择器

    driver.find_element_by_css_selector("th.table-icon.csv_table#table_all_pid_[title='Download Results Comma Separated Values File'] > img").click()
    
  • xpath

    driver.find_element_by_xpath("//th[@class='table-icon csv_table' and @id='table_all_pid_' and @title='Download Data as Comma Separated Values File']/img").click()
    

您能否详细说明“它就是不下载文件”的含义?有错误吗?单击后您是否有足够的时间?当我通过powershell执行脚本时,它会通知我DevTools正在侦听,一个Chrome浏览器会打开并导航到该站点,然后它就停在那里而不下载文件。我还尝试删除driver.quit(),没有更改。你能分享元素
table\u all\u pid\u
及其周围的相关HTML吗?@DebanjanB补充说,你点击的只是一个表头,而不是实际的链接(奇怪的是,他们使用了标题,但不是我的网站)。这意味着它必须以某种方式使用JavaScript来启动下载。尝试使用调试模式逐步完成脚本,查看是否有任何js错误阻止下载启动。
driver.find_element_by_xpath("//th[@class='table-icon csv_table' and @id='table_all_pid_' and @title='Download Data as Comma Separated Values File']/img").click()