Javascript 使用不带url的python脚本从网页下载文件,调用onClick函数
有一个网页有一个链接“点击下载”,点击下载文件。 我可以手动下载此文件,方法是转到网页并单击此链接,但我需要通过python脚本下载此文件 如果我看到源代码,我可以看到锚定标记是,它将运行js函数Javascript 使用不带url的python脚本从网页下载文件,调用onClick函数,javascript,python,html,Javascript,Python,Html,有一个网页有一个链接“点击下载”,点击下载文件。 我可以手动下载此文件,方法是转到网页并单击此链接,但我需要通过python脚本下载此文件 如果我看到源代码,我可以看到锚定标记是,它将运行js函数 以csv下载这里可以应用两个基本选项: 模拟onclick()调用中涉及的逻辑-在您的情况下,使用,或 高级方法-使用-找到链接并单击它,自动化真正的浏览器,无头(PhantomJS)或无头(PhantomJS): from selenium import webdriver driver =
以csv下载
这里可以应用两个基本选项:
- 模拟
调用中涉及的逻辑-在您的情况下,使用,或onclick()
- 高级方法-使用-找到链接并单击它,自动化真正的浏览器,无头(
)或无头(PhantomJS
):PhantomJS
from selenium import webdriver driver = webdriver.PhantomJS() driver.get('url here') driver.find_element_by_class_name('download-data-link1').click()
PhantomJS
就不是一个选项,因为它不支持下载。如果使用Chrome
或Firefox
,则需要调整浏览器功能,以便在不打开弹出窗口的情况下自动下载文件,请参阅:
- 首先,您可以创建一个firefox配置文件。为此:
- 关闭所有firefox浏览器
- 转到cmd提示符并执行firefox.exe-P
- 创建配置文件并记下创建新配置文件的文件夹的名称 您可以在这里为您的个人资料设置一些选项,例如-自动从内容下载此类文件等 现在下载selenium for python并使用以下代码
- 谢谢大家的回答,但我想补充一下,我是如何实现它的
import os
from selenium import webdriver
download_dir="D:\a"
fp = webdriver.FirefoxProfile(<profile directory here as in step 4>)
fp.set_preference("browser.download.dir", download_dir)
fp.set_preference("browser.download.manager.showWhenStarting",False)
fp.set_preference("browser.helperApps.neverAsk.saveToDisk", "application/octet-stream");
browser = webdriver.Firefox(firefox_profile=fp)
browser.get("http://pypi.python.org/pypi/selenium")
# you can use your url here
browser.find_element_by_partial_link_text("selenium-2").click()
# Use your method to identify class or link text here
browser.close();
导入操作系统
从selenium导入webdriver
下载\u dir=“D:\a”
fp=webdriver.FirefoxProfile()
fp.set_首选项(“browser.download.dir”,download_dir)
fp.set_首选项(“browser.download.manager.showWhenStarting”,False)
fp.set_首选项(“browser.helperApps.neverAsk.saveToDisk”,“应用程序/八位字节流”);
浏览器=webdriver.Firefox(Firefox\u profile=fp)
browser.get(“http://pypi.python.org/pypi/selenium")
#你可以在这里使用你的url
浏览器。通过部分链接文本(“Seleniu-2”)查找元素。单击()
#使用您的方法在此处标识类或链接文本
browser.close();
希望这对其他人有所帮助:)它对python有帮助吗?因为链接有一种趋势(特别是现在),以后会被添加到DOM中,或者响应用户触发的特定事件,这使得无头浏览器成为更好的选择(IMHO)。我会研究PhantomJS或类似的工具,即使它不是python,也可能是我可以从python脚本调用的东西。只是按照你的建议看。需要进一步研究
PhantomJS
可以通过selenium
实现自动化,因此它可以是python。@ParthBatra:也可以是一个选项(链接到2个脚本:获取驱动程序下载所需内容,codeption start
启动/停止selenium),然后您可以非常轻松地将该设置与python脚本一起使用