Uses NsStr,ExDll,ExCtrls,ExObjs,ExData,extask,exstdctrls; var ms:string; wp : ActiveXObject; Urls, UrlHis:TStrlist; {*** eXmHouse_OnClick BEGIN ***} Function eXmHouse_OnClick:string; var s, h, p: string; i,j,k,Max: integer; ss: TStrings; values: TExCSVTable; begin values := TExCSVTable.Create; if Urls = nil then begin urls := TStrlist.Create; urlHis := TStrlist.Create; end; try eXmhouse.SetValue(0); p := eXmHouse.anns.params.text; if not assigned(wp) then wp := ActiveXObject.create('atWP.WebPublish','wp'); wp.DownMedia := true; wp.outScreen := true; wp.Show; wp.cururl := 'http://esf.xmhouse.com/Info/Info_SearchResult.aspx?TradeType=1&BuildType=1'; for i := 1 to 5 do begin exmemo.lines.add(format('*** Page %d ***',[i])); eXmhouse.SetValue(i*10); waitfor('pagerUpdate_input'); h := wp.getselallhtml; ExRunSpider(p,h,values); values.first; while not values.eof do begin s := 'url=http://esf.xmhouse.com'+Strright(values.fbn('url.u'),3); if not ((Urls.Indexof(s)>=0) or (UrlHis.Indexof(s)>=0)) then Urls.Add(s); values.next; end; s := format('href="javascript:__doPostBack(@pagerUpdate@,@%d@)', [I + 1]); //s := ; wp.Hlinkclick(strreplace(s, '@', #39)); end; waitfor('pagerUpdate_input'); finally ActiveXObject.Destroy('wp'); Values.free; wp := nil; //Always GetHouseRec; exmemo.lines.add('*** Finished ***'); end; end; procedure GetHouseRec; var i,Max:integer; values: TExCSVTable; html, params:string; begin values := TExCSVTable.Create; params := atxmhouserec.anns.params.text; Max := Urls.count-1; exmemo.lines.add(format('*** %D ***',[Max+1])); for i:=Max downto 0 do begin eRec.SetValue(Trunc((Max - i)*100/Max)); //Application.Processmessage; exmemo.lines.add(urls[i]); html := EXDLL.Execute('ExInt.dll','HttpGet',urls[i],''); UrlHis.Add(urls[i]); Urls.delete(i); Values.clear; ExRunSpider(params,html,Values); Values.first; try ExeSp(Values); except exmemo.lines.add('Sql Error!'); end; application.ProcessMessages; end; Values.free; end; procedure ExeSp(values :TExCSVTable); var sql:string; qy: TExFibQuery; begin {sql := 'EXECUTE PROCEDURE SP_HOUSE_TMP(:WEB_SITE)'; qy := db.exfibquery(sql); qy.sbn('WEB_SITE',values.fbn('标题')); exmemo.lines.add(qy.TmpSQLText); qy.execquery; db.commit; qy.free;//} sql:= 'EXECUTE PROCEDURE WEB_HOUSE_DATA(:WEB_SITE, :INFO_NO,:INFO_TITLE,:INFO_TYPE,:INFO_SOURCE,:HOUSE_TYPE,:HOUSE_TYPE2,'; sql := sql + ':HOUSE_REGION,:HOUSE_ADDR,:HOUSE_FORM,:HOUSE_FLOOR,:HOUSE_AREA,:HOUSE_AREA_USE,:HOUSE_PRICE,:HOUSE_YEAR,'; sql := sql + ':HOUSE_RIGHT,:HOUSE_STRUC,:HOUSE_KIND,:PUBLISH_DATE,:VALID_DATES,:BASE_CONDITION,:WIRING,:PERIPHERAL_SUPPORT,'; sql := sql + ':FITMENT,:TAX_NEED,:CONTACT,:MOBILE,:NOTES)'; //exmemo.lines(values.fbn('标题')); qy := db.exfibquery(sql); //exmemo.lines(values.fbn('标题')); qy.sbn('WEB_SITE','XMHOUSE'); qy.sbn('INFO_NO', values.fbn('信息编号')); qy.sbn('INFO_TITLE',values.fbn('标题')); qy.sbn('INFO_TYPE',values.fbn('发布类型')); qy.sbn('INFO_SOURCE',values.fbn('信息来源')); qy.sbn('HOUSE_TYPE',values.fbn('房屋类型')); qy.sbn('HOUSE_TYPE2',values.fbn('子 类 型')); qy.sbn('HOUSE_REGION',values.fbn('所在区域')); qy.sbn('HOUSE_ADDR',values.fbn('房屋地址')); qy.sbn('HOUSE_FORM',values.fbn('户 型')); qy.sbn('HOUSE_FLOOR',values.fbn('楼 层')); qy.sbn('HOUSE_AREA',values.fbn('建筑面积')); qy.sbn('HOUSE_AREA_USE',values.fbn('使用面积')); qy.sbn('HOUSE_PRICE',values.fbn('价 格')); qy.sbn('HOUSE_YEAR',values.fbn('建成年份')); qy.sbn('HOUSE_RIGHT',values.fbn('产权性质')); qy.sbn('HOUSE_STRUC',values.fbn('房屋结构')); qy.sbn('HOUSE_KIND',values.fbn('房屋性质')); qy.sbn('PUBLISH_DATE',values.fbn('发布时间')); qy.sbn('VALID_DATES',values.fbn('有效天数')); qy.sbn('BASE_CONDITION',values.fbn('基础设施')); qy.sbn('WIRING',values.fbn('设备情况')); qy.sbn('PERIPHERAL_SUPPORT',values.fbn('周边配套')); qy.sbn('FITMENT',values.fbn('装修程度')); qy.sbn('TAX_NEED',values.fbn('营 业 税')); qy.sbn('CONTACT',values.fbn('联 系 人')); qy.sbn('MOBILE',values.fbn('手 机')); qy.sbn('NOTES',values.fbn('备注')); //} qy.EXECQUERY; DB.COMMIT; qy.Free; //} end; {WP WAIT FOR} procedure waitfor(waitElements: string); var k: integer; begin k := wp.wbLocked; while (k = 1) or (not wp.ItemExists(waitElements)) do begin application.ProcessMessages; sleep(100); k := wp.wbLocked; end; end; {*** eXmHouse_OnClick END ***} begin end;