我是这里许多AppleScript初学者中的一个,现在已经是凌晨3点了,我已经做了所有可能的阅读,我仍然没有找到我的答案。希望一些专家能给我们一些启发。
我希望从一段html代码中反复提取两个字符串之间的多个值。(通过使用javascript从站点查找特定的id/class而获得的html字符串块)
经过几个小时的搜索/阅读,我发现很多人都在使用Applescript的文本项分隔符讨论这个问题。然而,到目前为止,它们都只做了一次。
我认为重复陈述可能是我的答案,但似乎并不真正适用于这里。(但很可能是因为我太菜鸟了)
目前为止,这是最常用的方法
set AppleScript's text item delimiters to startText
set text1 to text item 1 of InputString
set AppleScript's text item delimiters to endText
set text2 to text item 2 of InputString
set AppleScript's text item delimiters to {""}问题是,它只执行一次,并不关心输入字符串中是否有多个开始/结束字符串。
在这篇Applescript to remove all text not between two strings文章中,有人给出了一个简单的shell脚本,它实现了OP所要求的(也是到目前为止最接近我想要做的事情)。我希望我能接受,但我不知道如何将shell脚本更改为菜鸟。
非常感谢!
编辑:在专家的一个请求下,我添加了示例字符串和预期输出来演示我的目标。
<div class="table-1"><div class="row"><div class="table-3">Customer ID:</div><div class="table-5">1234567890</div></div><div id="title" class="row"><div class="table-3">Title:</div><div class="table-5"></div></div><div id="customer-name" class="row"><div class="table-3">Name:</div><div class="table-5"><span>FirstName LastName</span> </div></div><div id="primary-email" class="row"><div class="table-3">Primary Email:</div><div class="table-5">test_123@google.com</div></div><div id="customer-email" class="row"><div class="table-3">Account Email:</div><div class="table-5">test_abc@google.com</div></div></div>目标是获取客户ID、姓名和帐户电子邮件。
使用wch1zpink提供的方法,我能够擦除所有的html字符串,但它带来了更大的问题,因为现在我将所需的所有值都作为一个无法分隔的长字符串。我知道这不是一件容易的事情,而且我可能根本不是在朝着正确的方向前进。非常感谢您的帮助!
PS。我考虑过让脚本查找出现在">“和"<”之间的任何文本。如果发生"><“,则没有值并继续前进。最后,它应该给出我需要的值,以及一些诸如"Name:“或"Title:”的值。然后,如果输出可以以列表的形式列出,那么我就可以通过它的编号来获取该项。Ofc,只是一个菜鸟谈话,我希望我知道怎么做。
EDIT2:我决定使用不同的方法分别提取每个值,而不是从一个长的不一致的字符串块中一次提取3个值,并初步实现了我的目标。wch1zpink提供的擦除方法被证明是非常有用的。再次感谢大家的参与!
PSS。我欢迎将来的任何其他意见/反馈/建议!:D
发布于 2019-04-10 01:23:48
使用最新版本的macOS Mojave时,此AppleScript代码适用于我。
-- Define Source Text Here
set fullTextString to "<p>I thought repeat statement</p> <p>After hours of searching/reading</p>"
-- Define As Many Strings As You Want Removed Here
set removeFromFullTextString to {"<p>", "</p>"}
set cleanedText to stripOuterTextTID(fullTextString, removeFromFullTextString)
on stripOuterTextTID(fullTextString, removeFromFullTextString)
set originalText to fullTextString
set AppleScript's text item delimiters to removeFromFullTextString
set tempText to text items of originalText
set text item delimiters to ""
set cleanedText to tempText as text
end stripOuterTextTIDhttps://stackoverflow.com/questions/55590193
复制相似问题