gpt4 book ai didi

python - Selenium :无法下载文件

转载 作者:行者123 更新时间:2023-12-03 06:20:13 26 4
gpt4 key购买 nike

我正在尝试使用this网站自动从YouTube下载mp3文件。

目标:

  • 访问下载网站
  • 粘贴YouTube链接
  • 点击“转换视频”
  • 等待下载链接出现,然后单击它

  • 当我使用browser.find_by_id('dl_link').click()时,我的代码执行时没有任何错误,但未下载文件。为什么?

    当我使用browser.click_link_by_partial_text('Download')时,出现以下错误。

    这是我的代码:
    from splinter.browser import Browser
    import time

    with Browser() as browser:
    browser.visit("http://www.youtube-mp3.org")
    browser.find_by_id('youtube-url').fill("https://www.youtube.com/watch?v=lgT1AidzRWM")
    browser.find_by_id('submit').click()

    if browser.is_element_present_by_id('dl_link'):
    time.sleep(2)
    browser.click_link_by_partial_text('Download')
    # browser.find_by_id('dl_link').click()
    print "Clicked Download"
    time.sleep(2)

    这是我得到的错误:
    Traceback (most recent call last):
    File "/Users/anon/Dropbox/Programs/Proj/splinter2.py", line 11, in <module>
    browser.click_link_by_partial_text('Download')
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/splinter/driver/__init__.py", line 332, in click_link_by_partial_text
    return self.find_link_by_partial_text(partial_text).first.click()
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/splinter/driver/webdriver/__init__.py", line 539, in click
    self._element.click()
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/selenium/webdriver/remote/webelement.py", line 74, in click
    self._execute(Command.CLICK_ELEMENT)
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/selenium/webdriver/remote/webelement.py", line 457, in _execute
    return self._parent.execute(command, params)
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 233, in execute
    self.error_handler.check_response(response)
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 194, in check_response
    raise exception_class(message, screen, stacktrace)
    selenium.common.exceptions.ElementNotVisibleException: Message: Element is not currently visible and so may not be interacted with
    Stacktrace:
    at fxdriver.preconditions.visible (file:///var/folders/wj/t56fgsms4rdcgptcy94k2w8m0000gn/T/tmpAVUrd2/extensions/fxdriver@googlecode.com/components/command-processor.js:10092)
    at DelayedCommand.prototype.checkPreconditions_ (file:///var/folders/wj/t56fgsms4rdcgptcy94k2w8m0000gn/T/tmpAVUrd2/extensions/fxdriver@googlecode.com/components/command-processor.js:12644)
    at DelayedCommand.prototype.executeInternal_/h (file:///var/folders/wj/t56fgsms4rdcgptcy94k2w8m0000gn/T/tmpAVUrd2/extensions/fxdriver@googlecode.com/components/command-processor.js:12661)
    at DelayedCommand.prototype.executeInternal_ (file:///var/folders/wj/t56fgsms4rdcgptcy94k2w8m0000gn/T/tmpAVUrd2/extensions/fxdriver@googlecode.com/components/command-processor.js:12666)
    at DelayedCommand.prototype.execute/< (file:///var/folders/wj/t56fgsms4rdcgptcy94k2w8m0000gn/T/tmpAVUrd2/extensions/fxdriver@googlecode.com/components/command-processor.js:12608)
    [Finished in 7.2s with exit code 1]
    [shell_cmd: python -u "/Users/anon/Dropbox/Programs/Proj/splinter2.py"]
    [dir: /Users/anon/Dropbox/Programs/Proj]
    [path: /usr/bin:/bin:/usr/sbin:/sbin]

    我已经用相同的标题(错误:“元素当前不可见,因此可能无法与selenuim交互”)标题检查过其他问题,但是由于 Download按钮在我看来是可见的,因此我仍然无法解决此问题。

    任何帮助将非常感激

    编辑:

    每当我尝试使用 browser = Browser('firefox', profile=profile)设置配置文件时,都会出现以下错误:
    Traceback (most recent call last):
    File "/Users/adb/Dropbox/Programs/Proj/Youtube Playlist MP3/splinter2.py", line 11, in <module>
    browser = Browser('firefox', profile=profile)
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/splinter/browser.py", line 63, in Browser
    return driver(*args, **kwargs)
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/splinter/driver/webdriver/firefox.py", line 23, in __init__
    firefox_profile = FirefoxProfile(profile)
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/selenium/webdriver/firefox/firefox_profile.py", line 77, in __init__
    ignore=shutil.ignore_patterns("parent.lock", "lock", ".parentlock"))
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 171, in copytree
    names = os.listdir(src)
    TypeError: coercing to Unicode: need string or buffer, FirefoxProfile found

    最佳答案

  • 当我使用browser.find_by_id('dl_link')。click()时,我的代码执行时没有任何错误,但browser.click_link_by_partial_text('Download')抛出了?

  • 因为您与“静态”元素互动。

    当您点击“转换视频”按钮时,您将刷新DOM。但是您的驱动程序仍然可以在旧DOM上运行。这就是为什么您找不到使用 browser.click_link_by_partial_text('Download')的原因
  • 启动时,不会下载文件。为什么?

  • 可能是因为有一个弹出窗口询问您是否要保存并执行它。 Check this out

    关于python - Selenium :无法下载文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36495922/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com