我正在尝试获取今日报纸的金融时报网址列表。我通过从FT.com获取源代码,然后使用分隔符来解析html源代码来完成此操作,现在我尝试将每个URL保存为逗号分隔值文件(.txt扩展名)。
我已经能够解析html源代码了。但我的问题在于将网址保存为csv文件(或网址列表,以段落分隔)。
这是我的苹果:
on run
set query_url to "http://www.ft.com/uk-edition"
set query_url_source to do shell script "/usr/bin/curl " & quoted form of query_url
set p to query_url_source
set ex to extractBetweenLong(p, "><a href=\"/cms/s", ".html")
return ex
end run
--delimiters subroutine:
to extractBetweenLong(SearchText, startText, endText)
set tid to AppleScript's text item delimiters -- save them for later.
set AppleScript's text item delimiters to startText -- find the first one.
set liste to text items of SearchText
set AppleScript's text item delimiters to endText -- find the end one.
set extracts to {}
repeat with subText in liste
if subText contains endText then
copy text item 1 of subText to end of extracts
end if
end repeat
set AppleScript's text item delimiters to tid -- back to original values.
return extracts
end extractBetweenLong
我的输出如下:
{“^!DOCTYPE html ... subs5”,“/ 0 / 0130d092-c473-11e1-9c1e-00144feabdc0”,“/ 0 / cb8a70a0-c469-11e1-a98c-00144feabdc0”,...,“ / 0 / 02eaa328-c468-11e1-9c1e-00144feabdc0" ,}
我的第一个问题是为什么第一个字符串(^!DOCTYPE html ...)存在?我的delimiter子例程一定有问题,因为我的第一个'startText'分隔符不应包含“DOCTYPE ... subs5”(subs5 HTML选项卡以.html结尾),这可能表示我的子例程星
第二,如何将每个网址保存为列表,以逗号或换行符分隔?我首先想在每个URL之前添加字符串:“www.ft.com/cms/s”,但我相信我可以自己解决这个问题。
提前感谢您的帮助。
答案 0 :(得分:1)
AppleScript的文本项分隔符定义在将字符串拆分为文本项列表时使用的子字符串,以及将文本项列表重新组合回字符串时使用的子字符串。
文本项分隔符只是定义字符串被分解的位置,而不是要保留或丢弃的片段。在您的脚本中,您可以丢弃提取处理程序中的第一个文本项,例如:
设置侦听SearchText的其余文本项
获取文本项会产生字符串列表(文本项)。
set tempTID to AppleScript's text item delimiters
set AppleScript's text item delimiters to ("," & return & "www.ft.com/cms/s")
set ex to ex as text
set AppleScript's text item delimiters to tempTID
return "www.ft.com/cms/s" & ex