猿问

使用 Selenium 通过单击“javascript:__doPostBack

我想通过自动化下载一堆棒球统计数据的 CSV 文件,可以在以下位置找到:https: //www.fangraphs.com/leaders.aspx ?pos=all&stats=bat&lg=all&qual=0&type=0&season= 2020年&月份=0&季节1=2020&ind=0&团队=0&罗斯特=0&年龄=0&过滤=&球员=0&开始日期=2020-01-01&结束日期=2020-12-31。将表格下载为 CSV 的按钮标记为“导出数据”。

HTML:

<div class="br_dby">

    <span style="float: left">

        <a href="javascript:ShowHide();">Show Filters</a>  

            |  

        <a href="#custom">Custom Reports</a>

    </span>

    <a href="javascript:__doPostBack('LeaderBoard1$cmdCSV','')" id="LeaderBoard1_cmdCSV">Export Data</a>

</div>

正如您所知,该按钮不是重定向到下载页面(在这种情况下requests可用于下载文件),而是一个进程。


代码:


from selenium import webdriver

from selenium.webdriver.firefox.options import Options

binary = r'C:\Program Files\Mozilla Firefox\firefox.exe'

options = Options()

options.headless = True

options.binary = binary

options.set_preference("browser.download.folderList",2)

options.set_preference("browser.download.manager.showWhenStarting", True)

options.set_preference("browser.download.dir", r"C:\Users\jlpyt\Downloads")

driver = webdriver.Firefox(options=options, executable_path=r"C:\Users\jlpyt\geckodriver-v0.27.0-win32\geckodriver.exe")

driver.get('https://www.fangraphs.com/leaders.aspx?pos=all&stats=bat&lg=all&qual=0&type=0&season=2020&month=0&season1=2020&ind=0&team=0&rost=0&age=0&filter=&players=0&startdate=2020-01-01&enddate=2020-12-31')

elem = driver.find_element_by_id('LeaderBoard1_cmdCSV')

elem.click()

使用此代码,Selenium可以单击该按钮,但不会启动下载。有什么方法可以使用Selenium单击按钮并下载文件吗?或者,是否有一些我没有想到的替代方法?


jeck猫
浏览 137回答 0
0回答
随时随地看视频慕课网APP

相关分类

Python
我要回答