| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5390 人关注过本帖, 1 人收藏
标题:VFP编程技巧擂台赛[三]
取消只看楼主 加入收藏
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9831
专家分:27165
注 册:2012-2-5
结帖率:88.24%
收藏(1)
已结贴  问题点数:100 回复次数:9 
VFP编程技巧擂台赛[三]
网页内容提取

网址:http://www.stats.
上述网页内容为[河南省郑州市2011年行政区划代码和城乡划分代码],部分内容见下面内容:

代码 名称
410101000000 市辖区 &&该行可以不提取(没有分支)
410102000000 中原区
  410102001000 林山寨街道办事处
  ......
   410102001001 111 邮电院社区居委会
   ......
410103000000 二七区
410104000000 管城回族区
410105000000 金水区
410106000000 上街区
410108000000 惠济区
410122000000 中牟县
410181000000 巩义市
410182000000 荥阳市
410183000000 新密市
410184000000 新郑市
410185000000 登封市
要求:

程序代码:
提取内容为县(区)、乡(镇、街道)、村(居委会)三级,直接从网页提取内容(不允许下载提取),要求速度快,代码简洁。
最优者将获得60可用分奖励,参与者都有奖励。
本来想多放些分,可系统最高只能100分。
搜索更多相关主题的帖子: 中牟县 金水区 街道办事处 社区 编程 
2012-10-25 21:32
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9831
专家分:27165
注 册:2012-2-5
收藏
得分:0 
回复 3楼 taohua300
代码 名称
410101000000 市辖区
410102000000 中原区
410103000000 二七区
410104000000 管城回族区
410105000000 金水区
410106000000 上街区
410108000000 惠济区
410122000000 中牟县
410181000000 巩义市
410182000000 荥阳市
410183000000 新密市
410184000000 新郑市
410185000000 登封市

410102001000 林山寨街道办事处
410102002000 建设路街道办事处
410102003000 棉纺路街道办事处
410102004000 秦岭路街道办事处
410102005000 桐柏路街道办事处
410102006000 三官庙街道办事处
410102007000 绿东村街道办事处
410102008000 汝河路街道办事处
410102009000 航海西路街道办事处
410102010000 中原西路街道办事处
410102011000 西流湖街道办事处
410102012000 须水街道办事处
410102160000 石佛镇
410102360000 沟赵乡

410102001001 111 邮电院社区居委会
410102001002 111 碧沙岗社区居委会
410102001003 111 互助路社区居委会
410102001004 111 伊河路社区居委会
410102001005 111 文化宫路社区居委会
410102001006 111 颖河路社区居委会
410102001007 111 工业高专社区居委会
410102001008 111 一中社区居委会
410102001009 111 工程学院社区居委会
410102001010 111 工人路社区居委会
410102001011 111 百花社区居委会
410102001012 111 林山寨社区居民委员会
410102001013 111 技师学院社区居委会
410102001014 111 郑州日报社区居委会

坚守VFP最后的阵地
2012-10-26 14:01
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9831
专家分:27165
注 册:2012-2-5
收藏
得分:0 
回复 5楼 网路盲流
见4楼

坚守VFP最后的阵地
2012-10-26 15:04
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9831
专家分:27165
注 册:2012-2-5
收藏
得分:0 
程序代码:
CLEAR
T1=SECONDS()
CREATE CURSOR TQHDM (层次 N(1),代码 C(12),分类 C(3),名称 C(40),网址 C(150))
LOCAL DM,MC
DM=[4101.html]
MC=[郑州市]
URL=[http://www.stats.]+DM
CC=2
INSERT INTO TQHDM VALUES (CC,LEFT(DM,4),[],MC,URL)
DO WHILE .T.
   SELECT * FROM TQHDM INTO CURSOR TEMP WHERE 层次=CC
   IF EOF()
      EXIT
   ENDIF
   SCAN FOR NOT EMPTY(网址)
      CSTR=CWY(SUBSTR(ALLTRIM(网址),RAT([/],网址)+ICASE(CC=2,1,CC=3,-2,CC=4,-5)),ICASE(CC=2,'countytr',CC=3,'towntr',CC=4,'villagetr'))
      NROW=ALINES(AA,CSTR,[</td></tr>])
      FOR I=1 TO NROW
          =ALINES(BB,AA(I),[</td><td>])
          DM=RIGHT(BB(1),12)
          FL=IIF(CC+1=5,BB(2),[])
          MC=IIF(CC+1=5,BB(3),SUBSTR(BB(2),AT([>],BB(2))+1))
          URL=IIF([.html]$AA(I),SUBSTR(ALLTRIM(网址),1,RAT([/],网址))+SUBSTR(BB(2),1,AT([>],BB(2))-1),[])
          INSERT INTO TQHDM VALUES (CC+1,DM,FL,MC,URL)
      ENDFOR
   ENDSCAN
   CC=CC+1
ENDDO
MESSAGEBOX(SECONDS()-T1)
SELECT TQHDM
BROWSE
*----------------------------------
FUNCTION CWY
PARAMETERS WY,BZ
LCURL = [http://www.stats.]+WY
OHTML = CREATEOBJECT("MICROSOFT.XMLHTTP")
OHTML.OPEN([GET], LCURL, .F.)
OHTML.SEND
CSTRA=STRTRAN(STRTRAN(STRTRAN(STRTRAN(STREXTRACT(STRCONV(OHTML.RESPONSEBODY,2),[名称</td></tr>],[</table></TD></TR>]),;
      [<tr class='&BZ'><td>],[]),[</a>],[]),[<a href=],[]),['],[])
RETURN CSTRA
请大家帮忙测试一下

坚守VFP最后的阵地
2012-10-27 23:50
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9831
专家分:27165
注 册:2012-2-5
收藏
得分:0 
回复 15楼 月沐庭轩
运行没反应。

坚守VFP最后的阵地
2012-10-27 23:53
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9831
专家分:27165
注 册:2012-2-5
收藏
得分:0 
回复 21楼 月沐庭轩
怎么才216条记录

坚守VFP最后的阵地
2012-10-28 21:58
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9831
专家分:27165
注 册:2012-2-5
收藏
得分:0 
程序代码:
CLEAR
T1=SECONDS()
CREATE CURSOR TQHDM (层次 N(1),代码 C(12),分类 C(3),名称 C(40),网址 C(100))
LOCAL DM,MC
DM=[41.html] && 如:[41.html][4101.html][410102.html],分别代表市、县、乡
MC=[河南省]    && 对应于上面的DM,如郑州市
CWZ=[http://www.stats.]
NUM=LEN(GETWORDNUM(DM,1,[.]))
CDM=ICASE(NUM=2,DM,NUM=4,LEFT(DM,2)+[/]+DM,NUM=6,LEFT(DM,2)+[/]+SUBSTR(DM,3,2)+[/]+DM)
CC=ICASE(NUM=2,1,NUM=4,2,NUM=6,3) && 123 分别代表市、县、乡
EX=2 && EX>=CC AND EX<=5 &&控制提取数据范围,EX=2,说明只提取到县级数据,余以此类推。
NLEN=LEN(CWZ)
URL=CWZ+CDM
INSERT INTO TQHDM VALUES (CC,PADR(GETWORDNUM(DM,1,[.]),12,[0]),[],MC,URL)
DO WHILE .T.
   SELECT * FROM TQHDM INTO CURSOR TEMP WHERE 层次=CC
   IF EOF()
      EXIT
   ENDIF
   SCAN FOR NOT EMPTY(网址)
      CSTR=CWY(SUBSTR(ALLTRIM(网址),NLEN+1),ICASE(CC=1,'citytr',CC=2,'countytr',CC=3,'towntr',CC=4,'villagetr'))
      NROW=ALINES(AA,CSTR,[</td></tr>])
      FOR I=1 TO NROW
          =ALINES(BB,AA(I),[</td><td>])
          DM=RIGHT(BB(1),12)
          FL=IIF(CC+1=5,BB(2),[])
          MC=IIF(CC+1=5,BB(3),SUBSTR(BB(2),AT([>],BB(2))+1))
          URL=IIF([.html]$AA(I),SUBSTR(ALLTRIM(网址),1,RAT([/],网址))+SUBSTR(BB(2),1,AT([>],BB(2))-1),[])
          INSERT INTO TQHDM VALUES (CC+1,DM,FL,MC,URL)
      ENDFOR
   ENDSCAN
   IF CC=EX
      EXIT
   ENDIF
   CC=CC+1
ENDDO
MESSAGEBOX(SECONDS()-T1)
SELECT TQHDM
BROWSE
FUNCTION CWY
PARAMETERS WY,BZ
LCURL = [http://www.stats.]+WY
OHTML = CREATEOBJECT("MICROSOFT.XMLHTTP")
OHTML.OPEN([GET], LCURL, .F.)
OHTML.SEND
CSTRA=STRTRAN(STRTRAN(STRTRAN(STRTRAN(STREXTRACT(STRCONV(OHTML.RESPONSEBODY,2),[名称</td></tr>],[</table></TD></TR>]),;
      [<tr class='&BZ'><td>],[]),[</a>],[]),[<a href=],[]),['],[])
RETURN CSTRA

在17楼代码的基础上稍做修改,可以分别提取市、县、乡级数据[根据输入内容不同],只要修改第四行DM= 及第五行MC= 后面的内容,就可以提取不同的数据。


[ 本帖最后由 sdta 于 2012-10-29 20:22 编辑 ]

坚守VFP最后的阵地
2012-10-29 20:09
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9831
专家分:27165
注 册:2012-2-5
收藏
得分:0 
回复 32楼 月沐庭轩
在学习过程中不断提高

坚守VFP最后的阵地
2012-10-29 21:12
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9831
专家分:27165
注 册:2012-2-5
收藏
得分:0 
回复 32楼 月沐庭轩
提取河南省的全部数据大约需要多少时间

坚守VFP最后的阵地
2012-10-29 21:13
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9831
专家分:27165
注 册:2012-2-5
收藏
得分:0 
请教个问题,我的电脑运行速度为什么会慢,提取河南省的全部数据大约需要64-65秒,每次时间相差比较大,什么问题。


坚守VFP最后的阵地
2012-10-29 21:32
快速回复:VFP编程技巧擂台赛[三]
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026538 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved