4

主题:在 OS X 10.4.x+ Tiger/Leopard 中以编程方式操作 Web 浏览器。主题:Webkit、Safari、Firefox、API、Applescript、Automator、Javascript、Ruby、Ruby on Rails、OS X、Tiger 目标:从 Safari 中收集/读取/提取 URL 到文本(Ruby on Rails 代码)文件中。注意:也非常感谢使用 FF 的解决方案。我使用 Safari(v. 3.x,OS X 10.4.x)越来越喜欢在 Safari 中工作的解决方案。

有时,我使用网络浏览器查找/显示多个网站页面,我 1) 想稍后再次访问和 2) 我想将其组合在一个文本文件中的 URL 以供 a) 将来参考和/或 b)以编程方式操作。

例如:在今天的《纽约时报》中,我找到了七篇我想发布到我的 del.icio.us 帐户的 NYT 文章。并在他们成为当天在线版的头条新闻很久之后,通过电子邮件以他们的“打印机友好”格式分享。我在浏览器窗口的点击中打开每一个,然后是 Presto!他们的 URL 自动被放入一个文件中,一个(自定义)Ruby on Rails 应用程序将打印版本的 URL 发送到电子邮件地址和我的 Del.icio.us 帐户。

我认为有一种方法可以使用 Applescript 或 Automator 从操作系统中提取 URL。我认为可能有一种方法可以使用 Javascript 来做到这一点。

我的问题:如何读取网络浏览器选项卡的位置字段并将这些字符串整理到文本文件中(在我的操作系统中或通过网络连接到网络应用程序。)?

非常感激。

4

5 回答 5

2

对于 Safari,这对于 Applescript 来说非常简单。我建议从书签所有选项卡之类的东西开始,以获得您需要的基本选项卡抓取逻辑,并可能将其合并到 John Gruber 的旧Save and restore Safari URLs脚本中,以将 URL 作为列表保存到文本文件.

那里也可能有更好的 Applescript 解决方案;这些只是我通过谷歌找到的第一个,而且都过时了。

有关 Applescript 的更多帮助和资源,我建议您访问MacScripter 论坛

祝你好运!

于 2008-11-19T02:25:56.750 回答
1

如果您想在 Firefox 中做到这一点,您将不得不学习和使用 XUL。这些标签对 javascript 不可见(安全/隐私问题),并且在 firefox 之外没有此类信息的 API。

Getting Started with XUL development是一个很好的资源,可以帮助您开始使用 XUL 进行编程。

IBM为您的第一个 XUL 代码提供了不错的教程。

这是XUL中的选项卡处理程序,可让您了解如何处理选项卡。

一个简短的教程,演示混合 XUL、javascript 和其他技术来更新网站。

最后,这是一个关于 firefox 扩展/附加组件的优秀 lifehacker 教程,它通过一个简单的示例向您展示了上面的大部分内容,然后是如何将其打包为 .xpi,以便其他人可以轻松地将其添加到他们的 firefox 并对其进行管理。

我对 Safari 没有任何了解,但它基于 webkit,并且应该有一些资源来自定义它,类似于在 Firefox 上使用 XUL 的方式。

祝你好运!

-亚当

于 2008-11-18T16:24:40.427 回答
0

Firefox 中最简单的解决方案是“为所有打开的标签添加书签”(在书签菜单中)。给这个“书签文件夹”一个特定的名称。然后,您可以进入您的个人资料(http://support.mozilla.com/en-US/kb/Profiles)并打开文件“bookmarks.html”,其中包含您想要的所有信息,然后是一些信息。

如果您想使用 UI,请查看禁忌和“Sitzungs-Manager”(可能是 Session-Manager)。两者都适用于 Firefox 3.0+

Taboo 允许您保存标签以供“以后阅读”(有点像书签菜单,但只需单击一下;也会保存页面的屏幕截图)。

会话管理器插件允许您保存当前打开的选项卡和窗口并在以后恢复它们。

于 2008-11-19T16:42:26.210 回答
0

这是一个 AppleScript 的脚本,它应该可以帮助您(该脚本适用于 Safari)...

property these_URLs : {}
set the text item delimeters of AppleScript to ""
----------------------------------------------------------------------------------
--Initialize the program
set the action to the button returned of (display dialog "Create or view a list of favorites..." buttons{"Cancel","View","Create"} default button 3)
if the action is "Create" then
    create_text_file()
else
    open_favorites()
end if

---------------------------------SUBROUTINES--------------------------------------

on create_text_file()
    --get the URL of every tab of every window
    tell application "Safari"
        set theWindows to (get every document) as list
        repeat with i from 1 to the count of theWindows
            set this_Window to item i of theWindows
            set theTabs to (get every tab of this_Window) as list
            repeat with x from 1 to the count of theTabs
                set this_Tab to item x of theTabs
                set this_URL to (the URL of this_tab) as string
                set the end of these_URLs to this_URL
            end repeat
        end repeat
    end tell

    --put the URLs into a text document
    set newFile to (choose file name with prompt "Choose a name and location for the new file:" default location (path to desktop folder))
    try
        open for access newFile with write permission
        set the text item delimiters of AppleScript to return
        set the_URLs to these_URLs as string
        write the_URLS to file newFile
        close access newFile
    on error
        try
            close access newFile
        end try
    end try
    set the text item delimiters of AppleScript to ""
end create_text_file()

on open_favorites()
   --Verify whether you have saved any favorites with this script
   if these_URLs is {} then display dialog "You have not added any favorites with this script." with icon note buttons{"Cancel"}
   --there are favorites so open all the URLs you stored in the text file
   repeat with i from 1 to the count of these_URLs
       set this_URL to item i of these_URLs
       tell application "Safari" to make new tab at the end of tabs of document 1 with properties {URL:this_URL}
   end repeat
end open_favorites

如果你有问题,就问吧。:)

于 2011-07-26T20:46:42.837 回答
0

您可以修改此位 0 代码以帮助您入门。我用它为一个标签构建了我自己的个人书签插件。您可以在 xul 窗口中弹出 url 列表,然后选择要发布/代理到一个地方的那些。

function getGetDocData(){
var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"]
               .getService(Components.interfaces.nsIWindowMediator);
var mainWindow = wm.getMostRecentWindow("navigator:browser");
var tab  = mainWindow.getBrowser().selectedTab;
titleDG = tab.label;
for(var i = 0; i < window.opener.length; i++){
    var doc = window.opener[i].document;
    if(doc.title == tab.label){
        hrefToDG = doc.location.href;
    }
}

}

于 2009-09-02T18:27:33.073 回答