【问题标题】:AppleScript cURL and parse URLAppleScript cURL 和解析 URL
【发布时间】:2011-09-25 08:10:14
【问题描述】:

我正在开发 Automator 工作流程,我正在将 URL 列表传递给“运行 Applescript”,并且我需要获取每个页面上的内容,连接并将其传递给 BBedit(或任何其他文本编辑器)。

on run {input, parameters}

    tell application "BBEdit"
        activate

        set astid to AppleScript's text item delimiters

        set startHere to "<tbody>"
        set stopHere to "</tbody>"

        repeat with anItem in input

            set blurb0 to (do shell script "curl " & anItem)
            set AppleScript's text item delimiters to startHere
            set blurb1 to text item 2 of blurb0
            set AppleScript's text item delimiters to stopHere
            set blurb2 to text item 1 of blurb1

            set AppleScript's text item delimiters to astid

            return blurb2
            beep

        end repeat      

    end tell

end run

当前代码仅正确地仅从第一个 URL 获取内容。有人可以解决这个问题吗?

【问题讨论】:

    标签: applescript automator osx-snow-leopard


    【解决方案1】:

    这个子程序可能是你需要的(如果你使用的是 Safari)...

    on getSource(this_URL)
        tell application "Safari"
            activate
            set the URL of the current tab of document 1 to this_URL
            set the |source| to the source of the front document
        end tell
        tell application "TextEdit"
            activate
            set the text of the front document to the source
        end tell
        quit application "Safari"
    end getSource
    

    调用它使用:

    repeat with anItem in input
        getSource(input)
    end repeat
    

    我希望这会有所帮助!

    【讨论】:

      【解决方案2】:

      因为您在 repeat with anItem in input 循环中,所以它会为第一个项目完成所有工作,而 return 退出循环,实际上是整个 Automator 操作。我想你从来没有从你的脚本中听到过beep ;-)

      另一方面,我想知道为什么您希望 BBEdit 为您完成 cUrl 和排序工作。所有被调用的处理程序都不属于 BBEdit...

      我认为你的处理程序应该是这样的:

      on run {input, parameters}
      
          -- define a few parameters
          set astid to AppleScript's text item delimiters
          set startHere to "<tbody>"
          set stopHere to "</tbody>"
      
          -- define a list to store all found content
          set allFoundContent to {}
      
          repeat with anItem in input
      
              set blurb0 to (do shell script "curl " & anItem)
              set AppleScript's text item delimiters to startHere
              set blurb1 to text item 2 of blurb0
              set AppleScript's text item delimiters to stopHere
      
              -- put the found content at the end of the list
              set end of allFoundContent to text item 1 of blurb1
      
              set AppleScript's text item delimiters to astid
      
          end repeat
      
          -- from here you have three possibilities:
          -- 1. return the list to next Automator action (uncomment the next line):
      
          -- return allFoundContent
      
      
          -- 2. concatenate the list with a delimiter you like (here return & "------" & return)
          -- and give it to your preferred text editor from this point (uncomment the next lines):
      
          -- set AppleScript's text item delimiters to return & "------" & return
          -- tell application "TextEdit"
          --     make new document with properties {text: allFoundContent as text}
          -- end tell
          -- set AppleScript's text item delimiters to astid
      
      
          -- 3. concatenate the list with a delimiter you like (here return & "------" & return)
          -- and give it to the next workflow step, maybe a BBEdit action waiting for a string? (uncomment the next lines):
      
          -- set AppleScript's text item delimiters to return & "------" & return
          -- set returnString to allFoundContent as text
          -- set AppleScript's text item delimiters to astid
          -- return returnString
      
      
          -- Next decision (for choice 1 or 2):
          -- What do you want to give to next Automator action?
      
          -- you can pass your input (the given URLs) (uncomment next line):
          -- return input
      
          -- or your result list (uncomment next line):
          -- return allFoundContent
      end run
      

      你好,迈克尔/汉堡

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-01-03
        • 2014-02-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多