使用ColdFusion进行页面抓取

时间:2012-07-20 01:00:10

标签: regex coldfusion

我需要使用ColdFusion动态创建一个新的布局,方法是将页面的顶部和底部翻译为2个不同的变量。

在此之前,顶部停在顶部。

googleoff: all (This is in an HTML Comment)

底部从

开始
googleon: all (This is in an HTML comment)
直到最后。

我在想我可以使用正则表达式来做到这一点。

1 个答案:

答案 0 :(得分:0)

假设这些注释只出现在您所声明的位置,您可以使用正则表达式字符串拆分轻松完成此操作:

<cfset Sections = String.split( '<!-- google(?:on|off): all -->' ) />

<cfset TopOfPage    = Sections[1] />
<cfset BottomOfPage = Sections[3] />

如果注释没有修复,则需要更新正则表达式 - 例如,如果空格不可预测,则可以用\s*替换空格。


为了比较,这是一个非正则表达式版本:

<cfset EndOfTopPos      = find( '<!-- googleoff: all -->' , String ) - 1 />
<cfset StartOfBottomPos = find( '<!-- googleon: all -->' , String , EndOfTopPos ) + 22 />

<cfset TopOfPage    = left( String , EndOfTopPos ) />
<cfset BottomOfPage = right( String , len(String)-StartOfBottomPos ) />

由于这适用于固定字符串,因此速度更快 - 但在此差异可能很大之前,您需要重复几千次。