我可以使用cfhttp从外部站点删除分页

时间:2015-01-09 13:19:23

标签: coldfusion

我在我的网站上获取一个网站结果,如果有更多的记录,分页也随之而来,所以它显示分页和记录

这不仅仅是一个问题,而是在我做任何尝试之前,我不知道从哪里开始

这是可能的,我可以通过一些客户端或服务器端对结果进行无限分页,请告诉我们,谢谢

Pagination在cfhttp.filecontent中看起来像这样:

<TD align="right" width="100"><font class="MainBody">Pages:&nbsp;&nbsp;<a href="http://websiteaddress.com/9.asp?type=10&pagenum=1"><<</a>&nbsp;&nbsp;1&nbsp;<a href="http://websiteaddress.com/9.asp?type=10&pagenum=2">2</a>&nbsp;&nbsp;&nbsp;<a href="http://websiteaddress.com/9.asp?type=10&pagenum=2">>></a>&nbsp;&nbsp;&nbsp;</FONT></TD>

1 个答案:

答案 0 :(得分:1)

这对你有用。它搜索TD标签,后跟FONT标签,然后是Pages ..然后搜索到第一个结束TD。

结果存储在newfilecontent中。

<cfset newfilecontent = REReplaceNoCase(cfhttp.filecontent,"<td.*?><font.*?>Pages.*?<\/td>","","ALL")>

通过更详细的问题,您所需要的基本上只是一个基本的蜘蛛。

这只是为了从结果的第一页起作用。你不能在第3页说明这一点,并获得第2页和第1页。

<cfhttp...> <!--- initial cfhttp --->
<cfset buildContents = ArrayNew(1)>
<cfset buildContents[1] = ReReplaceNoCase(cfHttp.fileContent,".*<body.*?>(.*)</body>.*","\1","ALL")>
<!--- Quick regex to parse the contents of the body tag out of the cfhttp --->
<cfloop condition="#ReFindNoCase("(http[^""]*?pagenum=\d+)(?="">>>)",currentContent)# gt 0">
    <cfset GetNextPage = ReMatchNoCase("(http[^""]*?pagenum=\d+)(?="">>>)",currentContents)>
    <cfhttp url="#GetNextPage[1]#"... result="inLoop">
    <cfset currentContents = ReReplaceNoCase(inLoop.filecontent,".*<body.*?>(.*)</body>.*","\1","ALL")>
    <cfset ArrayAppend(buildContents,REReplaceNoCase(currentContents,"<td.*?><font.*?>Pages.*?<\/td>","","ALL"))>
    <cfif ArrayLen(buildContents) gt 10>
      <!--- This code is untested, so this is a safety that you can remove or modify. If BuildContents has more than ten elements, it stops the looping. You can remove this cfif or maybe raise the number as a safety net.--->
      <cfbreak>
    </cfif>
</cfloop>

<cfdump var="#buildContents#">