标题:版主,来改标题(快速提取电话号码)
只看楼主
taohua300
Rank: 12Rank: 12Rank: 12
来 自:光
等 级:贵宾
威 望:14
帖 子:1636
专家分:3906
注 册:2009-3-11
得分:0 
回复 7楼 TonyDeng
如果要换页,我同意T版这个说法

个性太多,无法显示
2012-10-20 13:37
taohua300
Rank: 12Rank: 12Rank: 12
来 自:光
等 级:贵宾
威 望:14
帖 子:1636
专家分:3906
注 册:2009-3-11
得分:0 
回复 9楼 sdta
版主,快不快,要拿代码来说话

个性太多,无法显示
2012-10-20 13:43
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:0 
如何换页,不同网站后台有不同的处理办法,未必总可以通过修改查询字符串能激发不同页面的。就这个问题而言,从另存下来的页面提取数据就可以了,而且幸好它的数据非常有规律,很好做的,不至于要花几分钟时间的啊。

授人以渔,不授人以鱼。
2012-10-20 13:43
taohua300
Rank: 12Rank: 12Rank: 12
来 自:光
等 级:贵宾
威 望:14
帖 子:1636
专家分:3906
注 册:2009-3-11
得分:0 
以下是引用TonyDeng在2012-10-20 12:53:24的发言:

那是.htm,本身已是文本文件。只能逐页提取,因为翻页是动态的,数据在服务端传过来,不在本机。
对头,这两个网页实际上就是纯文本文件。
ie6 另存为时网页与网页里的元素是分开的
ie8 合并为一个mht文件
所以我在另存为的时候选择了“仅 HTML”这一项

这里也是着重于vfp对文本,字符串的处理
从“杂乱无章”的文本中得到想要的东西

个性太多,无法显示
2012-10-20 13:50
taohua300
Rank: 12Rank: 12Rank: 12
来 自:光
等 级:贵宾
威 望:14
帖 子:1636
专家分:3906
注 册:2009-3-11
得分:0 
以下是引用TonyDeng在2012-10-20 13:43:08的发言:

如何换页,不同网站后台有不同的处理办法,未必总可以通过修改查询字符串能激发不同页面的。就这个问题而言,从另存下来的页面提取数据就可以了,而且幸好它的数据非常有规律,很好做的,不至于要花几分钟时间的啊。
可能我表达有误,分析url包括纯文本网页中的链接
这个已经不是要讨论的范围了

这两个网页是我现从网上找的
当时他发给我的网页的确需要“稍等”一会
这个一会可长可短
具体怎样
我没有详细测试
只是在大体得到正确结果后就给他了
正所谓“应付了事”

这个速度,可能跟网页有关
比如网页大小,网页内容的格式

[ 本帖最后由 taohua300 于 2012-10-20 13:57 编辑 ]

个性太多,无法显示
2012-10-20 13:55
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
程序代码:
CLEAR
CLOSE ALL
CREATE CURSOR DHTQ (电话 C(20),地址 C(150))
HANDLE=FOPEN([DH01.TXT],10)
=FSEEK(HANDLE,0,0)
DO WHILE NOT FEOF(HANDLE)
   CSTR=FGETS(HANDLE,512)
   IF OCCURS([电话:],CSTR)>0
      =ALINES(AA,STRTRAN(CSTR,[电话:],[]),[地址:])
      INSERT INTO DHTQ VALUES(AA(1),AA(2))
   ENDIF
ENDDO
=FCLOSE(HANDLE)
BROWSE
只提取了第一页的内容,见下图


坚守VFP最后的阵地
2012-10-20 14:02
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
另外一个提取电话内容用ALINES()提取最方便。
上面的结果如果用TXT文件保存也容易。

坚守VFP最后的阵地
2012-10-20 14:03
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
程序代码:
*--- 转换为文本文件
CLEAR
CLOSE ALL
HANDLE=FOPEN([DH01.TXT],10)
=FSEEK(HANDLE,0,0)
CSTR1=[]
DO WHILE NOT FEOF(HANDLE)
   CSTR=FGETS(HANDLE,512)
   IF OCCURS([电话:],CSTR)>0
      =ALINES(AA,STRTRAN(CSTR,[电话:],[]),[地址:])
      CSTR1=CSTR1+AA(1)+[|]+AA(2)+CHR(13)+CHR(10)
   ENDIF
ENDDO
=FCLOSE(HANDLE)
STRTOFILE(CSTR1,[DH.TXT])

坚守VFP最后的阵地
2012-10-20 14:16
taohua300
Rank: 12Rank: 12Rank: 12
来 自:光
等 级:贵宾
威 望:14
帖 子:1636
专家分:3906
注 册:2009-3-11
得分:0 
回复 18楼 sdta
这个代码对另一个网页就不行了
应该通用

这属于我的错误
已在一楼补充(第6条)

另,只提取电话号码即可

个性太多,无法显示
2012-10-20 14:23
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
程序代码:
CLEAR
CLOSE ALL
CREATE CURSOR DHTQ (电话 C(20))
HANDLE=FOPEN([DH01.TXT],10)
=FSEEK(HANDLE,0,0)
CSTR1=[]
DO WHILE NOT FEOF(HANDLE)
   CSTR=FGETS(HANDLE,512)
   IF OCCURS([电话:],CSTR)>0
      =ALINES(AA,STRTRAN(CSTR,[电话:],[]),[地址:])
      INSERT INTO DHTQ VALUES(AA(1))
      CSTR1=CSTR1+AA(1)+[|]+CHR(13)+CHR(10)
   ENDIF
ENDDO
=FCLOSE(HANDLE)
=STRTOFILE(CSTR1,[DH.TXT]) &&生成文本文件
BROWSE
只要是这个网页上的电话号码,都通用。

坚守VFP最后的阵地
2012-10-20 14:38



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-383645-1-1.html




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

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