【问题标题】:Capture download link while the file is downloading by firefox using seleniumFirefox 使用 selenium 下载文件时捕获下载链接
【发布时间】:2014-03-15 08:23:10
【问题描述】:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys            
browser = webdriver.Firefox()
browser.get('www.example.com\mysite\')
browser.find_elements_by_xpath('//input[@value="Download"]')[0].click()

在这个阶段我的程序开始下载我想要的文件,但是如果我检查实际下载 在firefox中下载文件时的链接,例如:

 www.example.com\mysite\fsdgw?downloadid=werwqd422.jpg

所以,我想从 firefox 收集实际的下载链接,因为我想使用下载管理器高速下载几个文件。

是否有可能获得该下载链接?

【问题讨论】:

    标签: python selenium selenium-webdriver


    【解决方案1】:

    我会在 Java 中这样做。

    如果我的 html 是这样的:

    <tr>
      <td>
        <a href="http://website.com/music/file1.mp3">
        </td>
      </tr>
    <tr>
      <td>
        <a href="http://website.com/music/file2.mp3">
        </td>
      </tr>
    

    我的硒代码将是:

        List<WebElement> downloadLinks = driver.findElements(By.tagName("a"));
        PrintWriter writer = new PrintWriter("links.txt", "UTF-8");
    
        for(int i=0;i<downloadLinks.size();i++)
        {
          writer.writeLine(downloadLinks.get(i).getAttribute("href"));
        }
    
        writer.close();
    

    然后,我将使用该文本文件在我的下载管理器中启动突发下载会话。现在它将取决于您的下载管理器是否接受/导入 txt 文件以下载多个文件。如果需要,您可以写入 csv 文件。我提出了一个非常基本的例子。 请注意,只有当实际下载源包含在href 属性中时,才能通过&lt;a&gt; 标签查找元素。否则无济于事。

    【讨论】:

    • 抱歉,我认为您误解了我的问题。是的,html 不知道实际的下载链接。只有当我在firefox下载文件时手动看到它时才知道。
    • 所以我必须在 firefox 下载时捕获该下载链接
    • 是的。我重新阅读了您的问题,并了解到实际的下载链接不在源代码中。
    • 我担心在这种情况下这是不可能的,因为在您单击下载按钮后,它是 firefox 的本机部分或进入图片的浏览器,webdriver 无法做任何事情。
    • 所以没有办法捕获浏览器正在下载的内容?应该有办法吧?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-30
    • 1970-01-01
    • 2017-09-27
    • 2018-06-20
    • 2014-02-15
    • 2019-08-30
    • 1970-01-01
    相关资源
    最近更新 更多