0

我正在使用Chickenfoot 编写一个网络爬虫,需要保存PDF 文件。我可以单击页面上的链接或获取 PDF 的 URL 并使用

go("http://www.whatever.com/file.pdf") 

我得到了Firefox“打开file.pdf”对话框,但无法单击“确定”按钮实际保存文件。

我尝试使用其他方式下载文件(wget、python 的 urllib2、斜纹),但 PDF 文件是封闭的,所以这些都不起作用。

任何帮助表示赞赏。

4

3 回答 3

1

这个如何在 Mozilla 开发人员文档中保存目标的示例看起来应该完全符合您的要求。我已经测试了一个非常相似的 Chickenfoot 示例,它获取 temp 环境变量,并且在 Chickenfoot 中对我来说效果很好。

https://developer.mozilla.org/en/XPCOM_Interface_Reference/nsIWebBrowserPersist#Example

您可能必须使用工具、选项、应用程序中的应用程序关联,以确保将操作设置为保存文件,但这些设置可能不适用于这些功能。

结束答案,开始相关的抱怨......

我当然希望有人能修复Chickenfoot 中的许多错误,并编写一个不错的Cookbook 编程指南。我已经使用它多年了,但仍有许多基本的事情我无法弄清楚如何去做。我终于崩溃并订阅了邮件列表,因为档案中有一些不错的脚本示例。由于 Web API 参考非常稀疏,因此需要大量搜索 pdf 参考、博客等。我喜欢Chickenfoot 可以使某些任务自动化的简单方式,但是我需要花费数天时间搜索javascript、DOM 和Firefox 文档才能找到一些方法来完成一些它无法完成的事情,因为我并不是一个真正的网络程序员。Chickenfoot 的目标似乎是我不应该这样做,但不幸的是,很少有人在完善概念证明,因为 MIT 已经放弃了该项目。

我尝试仅使用Chickenfoot 命令以几种方式执行此操作,并确认它们不适用于最新的Firefox 3 和Chickenfoot 1.0.7。

我希望这有帮助!祝你好运。抱歉,我昨天才遇到您的问题,但发现它太有趣了,不能独自离开。

于 2011-04-11T02:29:52.523 回答
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 与 chickenfoot 一起使用会很有帮助。 http://groups.csail.mit.edu/uid/chickenfoot/scripts/index.php?title=Using_jQuery,_jQuery_UI_and_similar_libraries

于 2010-12-04T02:04:00.377 回答
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);” 这产生了一个错误。

于 2014-01-29T12:50:24.850 回答