【问题标题】:Unable to extract text from a link in imacros无法从 imacros 中的链接中提取文本
【发布时间】:2017-07-07 07:01:35
【问题描述】:

这是我从中提取数据的 HTML 标记

<div class="rLB">
<div class="propDBlock">
<div class="sepBlock" onclick="trackSearchResultDetails('1', '21', '26617371', 'V', '4442');detailViewTrack('26617371');">
<div class="proBrf">
<a data-id="26617371" class="property-sticky-link" href="/propertyDetails/1-BHK-330-Sq-ft-Multistorey-Apartment-FOR-Sale-Kalyan-in-Thane&id=4d423236363137333731" target="_blank" onclick="stopPage=true;callDetailPropertData('26617371');addViewedPropertyToCookie('26617371',1);detailViewTrack('26617371');clicktrack('1', 'propertyId=26617371,'+'21', 'div'+',sessionId='+sessionId  ,'Sale','Kalyan','Agent','38','Thane' ,'9200','', 'N','11.2 Lac','','1','Multistorey Apartment','','','23','','',false,'','',''); trackPropertyPosition('1', '21', '26617371', 'div')">
<input type="hidden" id="bedroomVal26617371" value="1">
<input type="hidden" id="propertyVal26617371" value="Apartment">
1 BHK Apartment
<span class="noWrapLocality">
for sale in
<span id="localityName26617371" class="localityFirst">Kalyan</span>
<span onclick="stopPage=true;" class="nearByTime"><span id='localitySecond26617371' class="localitySecond"></span>
</span>
</span>
<input type="hidden" id="propertyArea26617371" value="330 sqft">
<b class="areaValue">330&nbsp;sqft</b>
</a>
</div>

我正在使用

TAG POS=2 TYPE=a ATTR=CLASS:property-sticky-link&&TXT:* EXTRACT=TXT
SET VAR1 EVAL("'{{!EXTRACT}}'.match(/propertyDetails/.(.+?)BHK:/);")
PROMPT "VAR1={{VAR1}}"

但它给了我“多个”文本"BHK Apartmentfor sale in1 BHK Apartmentfor sale inKalyan1 BHK Apartment1 BHK Apartmentfor sale in1 BHK Apartmentfor sale inKalyan1 BHK Apartmentfor sale in1 BHK Apartmentfor sale inKalyan1 BHK Apartmentfor sale in1 BHK Apartmentfor sale inKalyan1 BHK Apartment1 BHK Apartmentfor sale in1 BHK Apartmentfor sale inKalyan1 BHK Apartmentfor sale in1 BHK Apartmentfor sale inKalyan1 BHK Apartmentfor sale in1 BHK Apartmentfor sale inKalyan690 sqft"

我只想要文本“1 BHK Apartment for sale in Kalyan”

关于我该如何做的任何想法。提前致谢

【问题讨论】:

  • ...这只是给了我多个文本输出是什么?
  • 不是在 cmets 中添加输出,而是将其移至问题(编辑)并应用格式以进行清晰阅读。
  • @Asunez 更新了帖子,请检查

标签: javascript regex imacros


【解决方案1】:

给你...我能够找出答案:

SET !EXTRACT NULL
TAG POS=1 TYPE=A ATTR=CLASS:property-sticky-link EXTRACT=TXT
SET LinkText {{!EXTRACT}}
SET !EXTRACT NULL
TAG POS=1 TYPE=B ATTR=CLASS:areaValue EXTRACT=TXT
SET areaValue {{!EXTRACT}}
SET FinalResult EVAL(" var x=\"{{LinkText}}\"; x=x.replace(\"{{areaValue}}\",\"\"); x=x.replace(/\\s/g,' '); x=x.replace(/ {1,}/g,\" \"); x; ")
PROMPT {{FinalResult}}

基本上,我们所做的是获取property-sticky-link 类定义的链接文本,然后通过areaValue 类获取平方英尺文本。每个都有自己的“变量”LinkTextareaValue

我们使用 EVAL 函数使用 javascript 的 replace 方法从 LinkText x=x.replace(\"{{areaValue}}\",\"\"); 中删除平方英尺文本,然后使用一些正则表达式删除空格并通过 x=x.replace(/\\s/g,' '); 将它们替换为空格。不幸的是,这导致一些单词之间出现了一些双空格,所以我再次替换以找到双空格并将它们替换为单个空格,并使用以下x=x.replace(/ {1,}/g,\" \");

最终结果变成: 1 BHK Apartment for sale in Kalyan

您应该能够使用我的解决方案作为模板提取您寻求的信息。

【讨论】:

  • 这有帮助吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-15
  • 2016-08-26
  • 2017-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多