针对BBEdit,Redux的“抓取HTML”脚本

至少就来自Google的传入流量而言,万博manbetx贴吧上最受欢迎的文章之一是“为BBEdit'抓取HTML'脚本“,我去年八月写的我一直使用这个脚本,并且最近意识到自从编写原始文章以来我已经为脚本添加了一些小的改进。

所以,这是一个更新版本。

历史

早在1996年,Dan Crevier为BBEdit编写了一个漂亮的免费软件插件HTML GrabberIt’s a simple but useful little thing: choose its menu item and it pops up a dialog box into which you enter a URL; click a button and the plug-in fetches the contents of the URL via HTTP, then presents the results in a new BBEdit text window.

有点像Web浏览器中的View Source命令,除非您已经在BBEdit中工作,否则更方便更好的是,HTML Grabber还为您提供了查看HTTP标头的选项,这在调试CGI时非常有用。

先生Crevier的插件仍可在BBEdit 7.0中使用,但仅适用于Mac OS 9但是,Mac OS X版本可以用AppleScript编写,将HTTP工作传递给命令行卷曲效用(因此,该脚本在Mac OS 9中不起作用。)

这是脚本将其粘贴到脚本编辑器中,并将其作为已编译的AppleScript保存在“BBEdit Support”文件夹的“Scripts”文件夹中。

property my_url : ""

tell application "BBEdit"
    set my_result to display dialog ¬
        "URL:" default answer my_url ¬
        buttons {"Cancel", "With Headers", "Grab Source"} default button 3
    set my_url to the text returned of my_result
    
    if button returned of my_result is "With Headers" then
        set my_text to do shell script ("curl -i " & my_url)
    else
        set my_text to do shell script ("curl " & my_url)
    end if
    
    make new text window with properties {contents:my_text, name:my_url}
    select insertion point before character 1 of text window 1
end tell

这是结果:

“Grab HTML”的屏幕截图。

(注意细心的读者HIG: I’m aware that “With Headers” is an awkward name for a button because it isn’t a verb; but the显示对话框命令坚持要使所有三个按钮的宽度相同,所以如果我们通过添加一个动词使中间按钮更长,那么另外两个按钮最终看起来很荒谬。)

这种AppleScript / shell混合显示了Mac OS X的最佳状态该做shell脚本命令将整个Unix命令行工具集放在您的指尖 - 虽然命令行本身不能提供良好的用户界面,但它可以非常容易使用程序设计接口。

值得注意的是卷曲is forgiving enough to accept URLs without a protocol specifier; you can just type “www.gazogooz.com” instead of “http://www.gazogooz.com”.

这个怎么运作

my_url是一个包含我们正在获取的URL的字符串因为它是属性,所以下次运行脚本时将记住您输入的最后一个URL它默认为空字符串。

显示对话框弹出一个带有文本输入字段的对话框文本输入字段的内容初始化为值my_url对话框解除后,my_result变量包含值记录,包括单击的按钮的名称和输入字段中的文本我们不需要检查是否单击了取消按钮,因为显示对话框命令足够聪明,可以知道“取消”按钮的含义 - 如果运行脚本并选择“取消”,则脚本会在对话框关闭后立即终止。

更新后的内容my_url,我们使用做shell脚本用于调用命令行实用程序的命令卷曲如果单击With Headers按钮,我们将包括-ioption to include the HTTP headers in the result; otherwise, we simply call卷曲没有选择该做shell脚本command以字符串形式返回命令输出。

最后,我们创建一个新的BBEdit文本窗口,其中包含的内容卷曲产量What’s cool about setting the contents of the window as a property is that if you’re using BBEdit 6.5 or later, BBEdit will guess the source language of the text, and will apply HTML syntax coloring (assuming the URL you fetched was for an HTML document), even if HTML isn’t your default language for new windowsWe also set the name of the window to the URL for the source we just grabbed; thus instead of the new window being named “Untitled 4”, it’ll be named “http://www.gazogooz.com/index.xml”这使得稍后通过Window菜单更容易找到窗口。

如果相反我们写了这样的东西:

make new text window
    set contents of text window 1 to my_text

然后BBEdit不会自动猜测语言(如果您保存了新窗口,但通常不会保存此脚本的结果,因此您必须手动将语言设置为HTML。)

以前: 寻找阿维
下一个: 市场份额