使用coldfusion刮取数据障碍

时间:2013-09-16 15:21:15

标签: coldfusion screen-scraping

我正在进行抓取,我需要提取网站的信息,基本上它是链接到内页

这是我的小尝试刮,我能够得到状态的名称,但我现在需要更深入,因为我承认,我在正则表达式非常糟糕

请指导。这是我的代码

<cfscript>
function stripHTML(str) {
    str = reReplaceNoCase(str, "<*style.*?>(.*?)</style>","","all");
    str = reReplaceNoCase(str, "<*script.*?>(.*?)</script>","","all");
    str = reReplaceNoCase(str, "<.*?>","","all");
    str = reReplaceNoCase(str, "^.*?>","");
    str = reReplaceNoCase(str, "<.*$","");
    return trim(str);
}
</cfscript>
<cfset start = false>
<cfhttp url="http://www.mapsofindia.com/pincode/" method="get"></cfhttp>
<cfset status = cfhttp.Statuscode>
<cfif status IS '200 OK'>
    <cfset start = true>
</cfif>
<cfif start>
    <cfset string = cfhttp.filecontent />
    <cfset StartText = '<table cellpadding=4 cellspacing=0 align="center" border="0" class=extrtable width="90%">' />
    <cfset Start = FindNoCase(StartText, string, 1) />
    <cfset EndText='<td style="width:50%">&nbsp;</td></tr></table><br /><br />' />
    <cfset Length=Len(StartText) />
    <cfset End = FindNoCase(EndText, string, Start) />
    <cfset parse = Mid(string, Start+Length, End-Start-Length) />
    <cfset parse = Insert('+',parse,FindNoCase("</a>", parse))>
    <cfset parse = trim(parse) />
    <cfset dbData = stripHTML(ListQualify(parse,'+'))>
    <cfloop list="#createLst#" index="k" delimiters="+">
        <cfquery name="insert_data" datasource="#request.dsn#">
        INSERT INTO cw_states(state,countrycode,country) 
        VALUES('#k#','IN','India')
        </cfquery>
    </cfloop>
    <table align="center">
        <cfoutput>#parse#<br></cfoutput>
    </tr>
    </table>
</cfif>

这是正确列出cfoutput页面,但我无法插入数据库。

问题2:链接正在进入另一个列出州的城市的页面,我想要像index2.cfm一样追加我的页面?url =#link#将提取城市并插入我所在城市的城市表和链接上的它应该像index3.cfm?url = #link#将打开另一个zip页面并在数据库中插入这些zip名称

请指导

0 个答案:

没有答案