私はスクレイピングに取り組んでおり、ウェブサイトの情報を抽出する必要があります。基本的には、内部ページへのリンクを提供しています
これが私のスクレイピングの小さな試みです。州の名前を取得することはできますが、正規表現が非常に苦手であることを認めているので、さらに深く掘り下げる必要があります
ガイドしてください。ここに私のコードがあります
<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%"> </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 名がデータベースに挿入されます。
ガイドしてください