我正在使用Chickenfoot编写网络爬虫,需要保存PDF文件。我可以点击页面上的链接或抓取PDF的URL并使用
go("http://www.whatever.com/file.pdf")
我得到了firefox“Opening file.pdf”对话框,但是无法点击“确定”按钮来实际保存文件。
我尝试过使用其他方法下载文件(wget,python的urllib2,twill),但PDF文件是门控的,所以这些都不起作用。
感谢任何帮助。
答案 0 :(得分:1)
如何在Mozilla开发人员文档中保存目标的示例看起来应该完全符合您的要求。我测试了一个非常相似的Chickenfoot示例,它获得了临时环境变量,这对我来说非常适合Chickenfoot。
https://developer.mozilla.org/en/XPCOM_Interface_Reference/nsIWebBrowserPersist#Example
您可能必须使用“工具”,“选项”,“应用程序”中的应用程序关联来确保将操作设置为“保存文件”,但这些设置可能不适用于这些功能。
结束答案,开始相关的抱怨......
我确定希望有人能解决Chickenfoot中的许多错误,并写一本不错的食谱编程指南。我已经使用它多年了,还有很多基本的东西我都无法弄清楚怎么做。我终于崩溃并订阅了邮件列表,因为档案有一些不错的脚本示例。由于Web API参考非常稀疏,因此需要大量搜索pdf引用,博客等。 我喜欢Chickenfoot可以自动完成一些任务,但是我花了几天的时间搜索javascript,DOM和Firefox文档来找到做某些事情的方法,因为我不是一个真正的网络程序员。 Chickenfoot的目标似乎是我不应该这样做,但遗憾的是很少有人正在改进概念证明,因为麻省理工学院放弃了这个项目。
我尝试使用Chickenfoot命令执行此操作,并确认它们不适用于最新的Firefox 3和Chickenfoot 1.0.7。
我希望这有帮助!祝好运。对不起我昨天只碰到了你的问题,但发现单独离开太有意思了。
答案 1 :(得分:0)
为安全起见,您将无法点击Firefox对话框。 下载URL内容的最佳方法是读取然后写入URL的内容。
// Chickenfoot 1.0.7 Javascript Code to download the content of a url.
include( "fileio.js" ); // enables the write function.
var url = "http://google.com",
saveFileTo = "c://chickenfoot-google.com";
write( saveFileTo, read( url ) );
您可能会发现在鸡爪中使用jquery很有帮助。 http://groups.csail.mit.edu/uid/chickenfoot/scripts/index.php?title=Using_jQuery,_jQuery_UI_and_similar_libraries
答案 2 :(得分:0)
这对我有用,可以从NCES门户保存Excel文件。
http://muaz-khan.blogspot.com/2012/10/save-files-on-disk-using-javascript-or.html
我使用的是Firefox 3.0和代码的“旧语法”版本。我还剥离了用于IE的代码和“(window.URL || window.webkitURL).revokeObjectURL(save.href);”这产生了一个错误。