通过单击“ javascript:__ doPostBack('LeaderBoard1 $ cmdCSV','')使用Selenium下载文件。

雅各布·李

我想通过自动化下载一堆棒球统计数据CSV文件,这些文件可以在以下网址找到: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将表格下载为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单击按钮并下载文件?或者,有没有我没有想到的替代方法?

DebanjanB

元素是__doPostBackenabled元素,因此要单击,就需要为引入WebDriverWaitelement_to_be_clickable()并且可以使用以下两种定位策略之一

  • 使用ID

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.ID, "LeaderBoard1_cmdCSV"))).click()
    
  • 使用LINK_TEXT

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.LINK_TEXT, "Export Data"))).click()
    
  • 使用CSS_SELECTOR

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "a#LeaderBoard1_cmdCSV"))).click()
    
  • 使用XPATH

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[@id='LeaderBoard1_cmdCSV']"))).click()
    
  • 注意:您必须添加以下导入:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
  • 浏览器快照:

扇形图


参考文献

您可以在以下位置找到一些相关的讨论:

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用Selenium Webdriver通过URL列表下载文件

来自分类Dev

_doPostBack未在JavaScript中定义

来自分类Dev

如何通过javascript从tomcat服务器下载文件?

来自分类Dev

CasperJS并通过iFrame和JavaScript下载文件

来自分类Dev

使用python硒单击并下载文件

来自分类Dev

webBrowser1.Navigate(“ javascript:__ doPostBack('....')”); 在C#.NET上无法正常工作

来自分类Dev

什么是href =“ javascript:__ doPostBack('ctl00 $ cph1 $ mnuPager','b3')”>

来自分类Dev

如何使用JavaScript强制下载文件?

来自分类Dev

使用JavaScript从链接自动下载文件

来自分类Dev

使用JavaScript在Safari中下载文件

来自分类Dev

单击与 VBA 中的 doPostBack & href 相关

来自分类Dev

使用Python通过Internet下载文件

来自分类Dev

使用Python通过SSH下载文件

来自分类Dev

使用Selenium通过PhantomJS中的超链接下载文件

来自分类Dev

使用Chrome驱动程序通过Python和Selenium在指定位置下载文件

来自分类Dev

ImageButton导致其他JavaScript的__dopostback事件

来自分类Dev

单击“下载”链接,使用JQuery不会下载文件

来自分类Dev

无法使用javascript设置下载文件的下载名称

来自分类Dev

通过 selenium 和 phantomjs 从动态 url 下载文件

来自分类Dev

单击按钮下载文件

来自分类Dev

如何通过Ajax单击从javascript文件执行node(console)命令

来自分类Dev

单击链接以使用curl下载文件

来自分类Dev

使用单击按钮上的curl下载文件

来自分类Dev

javascript按钮下载文件

来自分类Dev

如何在C#中使用__doPostback

来自分类Dev

使用邮递员发出“ _doPostBack”请求

来自分类Dev

通过单击按钮使用javascript添加文本框

来自分类Dev

通过单击来删除使用香草JavaScript动态创建的元素

来自分类Dev

通过使用javascript单击按钮动态添加django表单

Related 相关文章

  1. 1

    如何使用Selenium Webdriver通过URL列表下载文件

  2. 2

    _doPostBack未在JavaScript中定义

  3. 3

    如何通过javascript从tomcat服务器下载文件?

  4. 4

    CasperJS并通过iFrame和JavaScript下载文件

  5. 5

    使用python硒单击并下载文件

  6. 6

    webBrowser1.Navigate(“ javascript:__ doPostBack('....')”); 在C#.NET上无法正常工作

  7. 7

    什么是href =“ javascript:__ doPostBack('ctl00 $ cph1 $ mnuPager','b3')”>

  8. 8

    如何使用JavaScript强制下载文件?

  9. 9

    使用JavaScript从链接自动下载文件

  10. 10

    使用JavaScript在Safari中下载文件

  11. 11

    单击与 VBA 中的 doPostBack & href 相关

  12. 12

    使用Python通过Internet下载文件

  13. 13

    使用Python通过SSH下载文件

  14. 14

    使用Selenium通过PhantomJS中的超链接下载文件

  15. 15

    使用Chrome驱动程序通过Python和Selenium在指定位置下载文件

  16. 16

    ImageButton导致其他JavaScript的__dopostback事件

  17. 17

    单击“下载”链接,使用JQuery不会下载文件

  18. 18

    无法使用javascript设置下载文件的下载名称

  19. 19

    通过 selenium 和 phantomjs 从动态 url 下载文件

  20. 20

    单击按钮下载文件

  21. 21

    如何通过Ajax单击从javascript文件执行node(console)命令

  22. 22

    单击链接以使用curl下载文件

  23. 23

    使用单击按钮上的curl下载文件

  24. 24

    javascript按钮下载文件

  25. 25

    如何在C#中使用__doPostback

  26. 26

    使用邮递员发出“ _doPostBack”请求

  27. 27

    通过单击按钮使用javascript添加文本框

  28. 28

    通过单击来删除使用香草JavaScript动态创建的元素

  29. 29

    通过使用javascript单击按钮动态添加django表单

热门标签

归档