imacros在没有href的情况下提取所有文本

时间:2017-08-18 05:10:27

标签: imacros

需要帮助提取text1,text2,text3(我指的是所有文本,有时直到text9中的类别)



<h4>Category:</h4>
<p><a href="">text1</a>, <a href="">text2</a>, <a href="">text3</a></p>
&#13;
&#13;
&#13;

我的imacros代码只提取text1

&#13;
&#13;
TAG POS=R1 TYPE=A ATTR=TXT:* EXTRACT=TXT
&#13;
&#13;
&#13;

问:如何提取类别中的所有文字?

由于

2 个答案:

答案 0 :(得分:2)

要扩展JavaScript评论,您可以采用以下方式:

ExtractCategory.js内容

// Play the macro reading the category data
iimPlay("foo.iim");
// Get the last extracted value, i.e. the p content
var pContent = iimGetExtract();
// Parse the p using regex, first find a tag pairs and then drop the surrounding a tags
var result = pContent.match(/<a(.*?)<\/a>/g).map(function(val){
   return val.replace(/<\/?a>/g,'').replace(/<a.+>/g,'');
});
// Pass the generated String to another macro to work with it
iimSet("passed_var", result);
iimPlay("bar.iim");

ExtractCategory.js旁边的foo.iim内容

'Your previous code here, line #2 is just to find the right p in line #3 in a mockup html
TAG POS=1 TYPE=H4 ATTR=* 
TAG POS=R1 TYPE=P ATTR=* EXTRACT=HTM

ExtractCategory.js旁边的bar.iim内容

'Do whatever with the passed variable containing your formatted String
'This is just an output to show it
PROMPT {{passed_var}}

当你运行ExtractCategory.js时,它将运行你的foo.iim代码来提取 p 内容,用正则表达式解析它(可能要小心这里,取决于你期望这个文本可能会破坏)然后将生成的String传递给另一个宏,以便随心所欲地执行它。

根据需要运行此结果是text1,text2,text3。

如果您需要有关如何使用它们的更多信息,请阅读http://wiki.imacros.net/iimSet()http://wiki.imacros.net/iimPlay()

答案 1 :(得分:1)

这段代码将提取P标签内所有A标签中的数据,但是你需要做一个小设置,我使用XPATH来获取A标签的路径。

请安装:

XPath Checker By Brian Slesinsky

how to find the xpath of an element(我建议使用chrome控制台方法)

有了这个你需要右键单击一个标签并给出查看XPATH ,这将给你一个类似XPATH的

/x:html/x:body/x:p/x:a[2]

然后,在获得此X路径后,您需要将其粘贴到Xpath值中(注意,您需要在粘贴之前从上面的XPATH中删除 x:。另请注意[中的数字] ] Xpath表示子编号,因为我们使用!LOOP来设置标记的行号我们忽略[2] ),请参考下面的代码我在上面的Xpath中做了同样的操作

注意: 1.请根据要提取的A标签的数量循环imacros代码。 2.您还需要将SAVEAS行的文件夹属性更新为桌面路径。

<强>代码:

SET !LOOP 1
SET !ERRORIGNORE YES
TAG XPATH=(/html/body//p/a)[{{!LOOP}}] EXTRACT=TXT
SAVEAS TYPE=EXTRACT FOLDER=C:/Users/Test/Desktop/ FILE=output.csv