有一个网页有“点击下载”链接点击下载文件。 我可以通过访问网页并点击此链接手动下载此文件,但我需要通过python脚本下载此文件。
如果我看到源我可以看到锚标签将运行js函数
<a class="download-data-link1" onclick=" document.forms['dataform'].submit()" style="cursor:pointer; vertical-align: middle;">Download in csv</a>
但我不知道csv文件的url,我正在寻找一种通过python下载它的方法。
我知道如果我们有使用httplib的url但是无法理解如何获取没有url的文件,我们可以下载文件。
尝试了一些像标题中添加的内容 'Content-Disposition':'attachment; filename =“data.csv”'}
但似乎有效。有什么想法吗?
答案 0 :(得分:3)
感谢大家的回答,但我想补充一下,我是如何实现的。
您可以在此处为您的个人资料设置一些选项,例如 - 从内容等自动下载这些类型的文件。
现在下载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();
希望这可以帮助别人:)
答案 1 :(得分:2)
这里可以应用两个基本选项:
onclick()
电话中涉及的逻辑 - 在您的情况下,使用requests
提交dataform
表单提交,或mechanize
高级方法 - 使用selenium
自动化真实浏览器,无头(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
,您需要调整浏览器功能,以便在不打开弹出窗口的情况下自动下载文件,请参阅: