gpt4 book ai didi

python - 使用 python selenium 下载

转载 作者:太空宇宙 更新时间:2023-11-04 04:18:36 25 4
gpt4 key购买 nike

我想从网站下载文件。在该网站中,我单击一个按钮打开一个小子窗口,该窗口有一个按钮,单击该按钮可将文件下载到目录 path_here。这是我的解决方案:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chrome_options = Options()

chrome_options.add_argument('--dns-prefetch-disable')
chrome_options.add_experimental_option("prefs", {
"download.default_directory": r'path_here',
"download.prompt_for_download": False,
"download.directory_upgrade": True,
"safebrowsing.enabled": True
})
driver = webdriver.Chrome("./chromedriver", options=chrome_options)

website = "https://www.chess.com/ccc"
driver.get(website) # loads the page
# This closes a sub-window that opens automatically
element = driver.find_element_by_class_name("form-button-component")
element.click()

driver.find_element_by_class_name("icon-download").click()
download = driver.find_element_by_class_name('download-pgn')
# Click to download
download.find_element_by_class_name("btn").click()

这应该可以,但没有像我预期的那样下载文件。为了完整起见,我添加了一个屏幕截图:

description

按钮为下载游戏(PGN),其文本通过print(download.find_element_by_class_name("btn").text)获取

最佳答案

In the website I click on a button that opens a small sub-window

在这里您提到您正在打开一个新的子窗口,您必须在其中单击按钮进行下载。但是你没有切换到那个窗口。因此无法找到该元素。

使用 driver.window_handles 获取打开窗口的句柄并使用 driver.switch_to_window() 切换到该窗口,然后尝试点击按钮进行下载。

您可以在此 stackoverflow 中了解如何在 python selenium 中处理多个窗口 link .

编辑:

看来您的代码中存在一些问题。就像棋盘旁边的下载按钮定位器和后面那个定位器是不正确的。我已经使用正确的 xpath 更正了定位器,并且对 chrome_options 也做了一些小改动。您只需将 download.defualt_directory 更改为您机器中的路径,下面的代码就可以运行:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chrome_options = Options()

chrome_options.add_experimental_option("prefs", {
"download.default_directory": r"C:\Users\Thanthu Nair\Downloads\Test",
"download.prompt_for_download": False,
"download.directory_upgrade": True,
"safebrowsing.enabled": True
})
driver = webdriver.Chrome("./chromedriver", options=chrome_options)

website = "https://www.chess.com/ccc"
driver.get(website) # loads the page
driver.maximize_window()

# This closes a sub-window that opens automatically
element = driver.find_element_by_class_name("form-button-component")
element.click()

download = driver.find_element_by_xpath("//i[@title='Download']")
download.click()

# Click to download
download.find_element_by_xpath("//button[normalize-space()='Download Game (PGN)']").click()

关于python - 使用 python selenium 下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54955634/

25 4 0
文章推荐: css - 关于分离的 CSS 文件
文章推荐: python - 运行 python 的 Unix 进程
文章推荐: HTML 标签!删除新段落</a> </div> <div> 文章推荐: <a class="a-tag" href="/article/22/2780373/detail.html" target="_blank">linux - geniso 与 hfsbless 不工作</a> </div> </div> <div class="content-p"> <ul class="like-article"> <li> <a class="a-tag" href="/article/23/8320318/detail.html" target="_blank">python - Python 中的集群或合并集群以减少组数 (Python)</a> <p>我正在处理一组标记为 160 个组的 173k 点。我想通过合并最接近的(到 9 或 10 个组)来减少组/集群的数量。我搜索过 sklearn 或类似的库,但没有成功。 我猜它只是通过 knn 聚类</p> </li> <li> <a class="a-tag" href="/article/23/3880310/detail.html" target="_blank">python - python 列表的子集基于同一列表的元素组,pythonically</a> <p>我有一个扁平数字列表,这些数字逻辑上以 3 为一组,其中每个三元组是 (number, __ignored, flag[0 or 1]),例如: [7,56,1, 8,0,0, 2,0,0, 6,1,</p> </li> <li> <a class="a-tag" href="/article/23/8093748/detail.html" target="_blank">python - 激活 Python 虚拟环境并在另一个 Python 脚本中调用 Python 脚本</a> <p>我正在使用 pipenv 来管理我的包。我想编写一个 python 脚本来调用另一个使用不同虚拟环境(VE)的 python 脚本。 如何运行使用 VE1 的 python 脚本 1 并调用另一个 p</p> </li> <li> <a class="a-tag" href="/article/23/8004397/detail.html" target="_blank">python - 在焕然一新的 Python 环境中以编程方式从 Python 内部执行 Python 文件</a> <p>假设我有一个文件 script.py 位于 path = "foo/bar/script.py"。我正在寻找一种在 Python 中通过函数 execute_script() 从我的主要 Python</p> </li> <li> <a class="a-tag" href="/article/23/5868354/detail.html" target="_blank">python - 从 python 脚本但在 python 脚本之外运行 python 脚本</a> <p>这听起来像是谜语或笑话,但实际上我还没有找到这个问题的答案。 问题到底是什么? 我想运行 2 个脚本。在第一个脚本中,我调用另一个脚本,但我希望它们继续并行,而不是在两个单独的线程中。主要是我不希望第</p> </li> <li> <a class="a-tag" href="/article/22/2867014/detail.html" target="_blank">python - 使用不同的 python 从 python 运行 python 脚本</a> <p>我有一个带有 python 2.5.5 的软件。我想发送一个命令,该命令将在 python 2.7.5 中启动一个脚本,然后继续执行该脚本。 我试过用 #!python2.7.5 和http://re</p> </li> <li> <a class="a-tag" href="/article/20/1600655/detail.html" target="_blank">python - 为什么从 Python 命令行调用 Python 时 Python 无法找到并运行我的脚本?</a> <p>我在 python 命令行(使用 python 2.7)中,并尝试运行 Python 脚本。我的操作系统是 Windows 7。我已将我的目录设置为包含我所有脚本的文件夹,使用: os.chdir("</p> </li> <li> <a class="a-tag" href="/article/14/327833/detail.html" target="_blank">python - 使用动态版本的 Python 执行嵌入的 Python 代码时出现致命的 Python 错误</a> <p>剧透:部分解决(见最后)。 以下是使用 Python 嵌入的代码示例: #include int main(int argc, char** argv) { Py_SetPythonHome</p> </li> <li> <a class="a-tag" href="/article/23/8290266/detail.html" target="_blank">python - python 中识别 python 数组或列表中最大累积差异的最快方法是什么?</a> <p>假设我有以下列表,对应于及时的股票价格: prices = [1, 3, 7, 10, 9, 8, 5, 3, 6, 8, 12, 9, 6, 10, 13, 8, 4, 11] 我想确定以下总体上最</p> </li> <li> <a class="a-tag" href="/article/23/5670629/detail.html" target="_blank">python - (Python) 通过单选按钮 python 更新背景</a> <p>所以我试图在选择某个单选按钮时更改此框架的背景。 我的框架位于一个类中,并且单选按钮的功能位于该类之外。 (这样我就可以在所有其他框架上调用它们。) 问题是每当我选择单选按钮时都会出现以下错误: co</p> </li> <li> <a class="a-tag" href="/article/23/5636429/detail.html" target="_blank">python - python 中的字符串与正则表达式比较在 python 中失败</a> <p>我正在尝试将字符串与 python 中的正则表达式进行比较,如下所示, #!/usr/bin/env python3 import re str1 = "Expecting property name</p> </li> <li> <a class="a-tag" href="/article/23/5581413/detail.html" target="_blank">python - python 如何加载Boost.Python 库?</a> <p>考虑以下原型(prototype) Boost.Python 模块,该模块从单独的 C++ 头文件中引入类“D”。 /* file: a/b.cpp */ BOOST_PYTHON_MODULE(c)</p> </li> <li> <a class="a-tag" href="/article/23/5578424/detail.html" target="_blank">python - python 检查模块 python 的问题</a> <p>如何编写一个程序来“识别函数调用的行号?” python 检查模块提供了定位行号的选项,但是, def di(): return inspect.currentframe().f_back.f_l</p> </li> <li> <a class="a-tag" href="/article/23/5578573/detail.html" target="_blank">python - 系统 python 与用户 python</a> <p>我已经使用 macports 安装了 Python 2.7,并且由于我的 $PATH 变量,这就是我输入 $ python 时得到的变量。然而,virtualenv 默认使用 Python 2.6,除</p> </li> <li> <a class="a-tag" href="/article/23/5565821/detail.html" target="_blank">python - [Python] : Python re. 长字符串行的搜索速度优化</a> <p>我只想问如何加快 python 上的 re.search 速度。 我有一个很长的字符串行,长度为 176861(即带有一些符号的字母数字字符),我使用此函数测试了该行以进行研究: def getExe</p> </li> <li> <a class="a-tag" href="/article/23/5540878/detail.html" target="_blank">python - 编辑字符串 python 正则表达式 python</a> <p>list1= [u'%app%%General%%Council%', u'%people%', u'%people%%Regional%%Council%%Mandate%', u'%ppp%%Ge</p> </li> <li> <a class="a-tag" href="/article/23/3884866/detail.html" target="_blank">python - Python 映射中的副作用(Python "do" block )</a> <p> 这个问题在这里已经有了答案: Is it Pythonic to use list comprehensions for just side effects? (7 个答案) 关闭 4 个月前。 告</p> </li> <li> <a class="a-tag" href="/article/23/3876974/detail.html" target="_blank">python - 使用其值逻辑组合两个 python 列表 - Python</a> <p>我想用 Python 将两个列表组合成一个列表,方法如下: a = [1,1,1,2,2,2,3,3,3,3] b= ["Sun", "is", "bright", "June","and" ,"Ju</p> </li> <li> <a class="a-tag" href="/article/23/3858673/detail.html" target="_blank">python - Boost.Python python 链接错误</a> <p>我正在运行带有最新 Boost 发行版 (1.55.0) 的 Mac OS X 10.8.4 (Darwin 12.4.0)。我正在按照说明 here构建包含在我的发行版中的教程 Boost-Pyth</p> </li> <li> <a class="a-tag" href="/article/23/3808995/detail.html" target="_blank">python - 在 Python 中仅使用内置库制作一个基本的网络抓取工具 - Python</a> <p>学习 Python,我正在尝试制作一个没有任何第 3 方库的网络抓取工具,这样过程对我来说并没有简化,而且我知道我在做什么。我浏览了一些在线资源,但所有这些都让我对某些事情感到困惑。 html 看起来</p> </li> </ul> </div> </div> <div class="resource col-xs-3 col-sm-3 col-md-3 col-lg-3"> <div class="content-p content-p-comment"> <div class="phone-current phone-current-float"> <img alt="" src="/images/phone/manphone.jpeg"> </div> <div class="phone-current-float phone-current-style"> 太空宇宙 </div> <div class="phone-current-summary"> <span><strong>个人简介</strong></span> <p> 我是一名优秀的程序员,十分优秀! </p> </div> </div> <div class="content-p content-p-comment"> <article class="p-list"> <div class="art-margin" style="border-bottom: 1px solid #f3f0f0; padding-bottom: 5px;"> <strong>作者热门文章</strong> </div> <ul class="recomment-list-user"> <li><a class="a-tag" href="/article/22/2177999/detail.html" target="_blank">android - 多次调用 OnPrimaryClipChangedListener</a></li> <li><a class="a-tag" href="/article/22/2177998/detail.html" target="_blank">android - 无法更新 RecyclerView 中的 TextView 字段</a></li> <li><a class="a-tag" href="/article/22/2177997/detail.html" target="_blank">android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0</a></li> <li><a class="a-tag" href="/article/22/2177996/detail.html" target="_blank">android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色</a></li> </ul> </article> </div> <div class="content-p content-p-comment"> <article class="p-list"> <div class="art-margin" style="border-bottom: 1px solid #f3f0f0; padding-bottom: 5px;"> <strong>滴滴打车优惠券免费领取</strong> </div> <img alt="滴滴打车优惠券" src="/images/ad/didiad.png" width="210px" onclick="window.open('/ad/didi', '_blank')"> </article> </div> <div class="content-p content-p-comment"> <article class="p-list"> <div class="art-margin" style="border-bottom: 1px solid #f3f0f0; padding-bottom: 5px;"> <strong>全站热门文章</strong> </div> <ul class="recomment-list-user"> <li><a class="a-tag" href="/article/92/8827178/detail.html" target="_blank">现代IT基础设施管理(1):Terraform初识和小试牛刀</a></li> <li><a class="a-tag" href="/article/92/8827177/detail.html" target="_blank">推荐一个Star超过2K的.Net轻量级的CMS开源项目</a></li> <li><a class="a-tag" href="/article/92/8827176/detail.html" target="_blank">【Playwright+Python】系列(九)Playwright调用Chrome插件,小白也能事半功倍</a></li> <li><a class="a-tag" href="/article/92/8827175/detail.html" target="_blank">(1)Pytorch深度学习—数值处理</a></li> <li><a class="a-tag" href="/article/92/8827174/detail.html" target="_blank">如何使用Flask编写一个网站</a></li> <li><a class="a-tag" href="/article/92/8827173/detail.html" target="_blank">Qml中的那些坑(七)---ComboBox嵌入Popup时,滚动内容超过其可见区域不会关闭ComboBox弹窗</a></li> <li><a class="a-tag" href="/article/92/8827172/detail.html" target="_blank">鸿蒙NEXT开发案例:指尖轮盘</a></li> <li><a class="a-tag" href="/article/92/8827171/detail.html" target="_blank">使用ob_tools包收集分析oceanbase数据库oracle租户缓慢sql语句</a></li> <li><a class="a-tag" href="/article/92/8827170/detail.html" target="_blank">Quartz集群增强版_00.Howtouse?(如何使用)</a></li> <li><a class="a-tag" href="/article/92/8827169/detail.html" target="_blank">开发人员,千万不要去碰那该死的业务参数,无论什么时候!</a></li> </ul> </article> </div> </div> </div> </div> <div class="foot-font" style="border-top: 1px solid #f3f0f0; margin: auto; padding: 15px; background-color: #474443" align="center"> <a href="https://beian.miit.gov.cn/#/Integrated/index" target="_blank"><span class="color-txt-foot">Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号</span></a> <br/> <a href="/" target="_blank"><span class="color-txt-foot">广告合作:1813099741@qq.com</span></a> <a href="http://www.6ren.com" target="_blank"><span class="color-txt-foot">6ren.com</span></a> </div> <script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?d1cb9c185f1642d6f07e22cafa330c45"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script> <script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?d46c26b2162aface49b8acf6cb7025e1"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script> </body> </html>