标题:老师好,又来请教了,这个网页的采集入口如何找,谢谢
只看楼主
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用sdta在2021-6-5 11:30:15的发言:

如果当属性的顺序不一致时,程序会发生错误
{"ab":"12","cd","34","ef:","56"}
{"ef":"21","cd","43","ab:","65"}

是的,搜寻是不回头的:pStr = pEnd + LEN(cStr2)
如果要回头,每个记录要保存一个记录头指针,每次要从这个头指针开始搜寻
对于每个记录各字段数据顺序不确定,数据存放格式不规范,这样会影响搜寻效率
2021-06-05 11:47
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
以下是引用sdta在2021-6-5 11:30:15的发言:

如果当属性的顺序不一致时,程序会发生错误
{"ab":"12","cd","34","ef:","56"}
{"ef":"21","cd","43","ab:","65"}

看来不只是属性的顺序问题,属性的名称、name与value的分隔符也有问题,谈不上数据结构。
只能当文本处理,只抽(逐个来)


2021-06-05 15:35
jinanshui
Rank: 2
等 级:论坛游民
帖 子:274
专家分:64
注 册:2009-10-6
得分:0 
这个数据类型为什么不对呢?
CREATE CURSOR 大乐透 (红1 C(2), 红2 C(2), 红3 C(2),红4 C(2),红5 C(2),兰1 C(2),兰2 C(2),期号 C(5))
cUrl = "https://webapi.
oHttp = CREATEOBJECT("MSXML2.XMLHTTP")
oHttp.Open("GET", cUrl, .F.)
oHttp.Send()

t1 = SECONDS()

jsCode = 'var data=' + oHttp.responseText + ';' +;
         'var list=data["value"]["list"];' +;
         'function getList(n,name){return list[n][name];}'
oSC = CREATEOBJECT("ScriptControl")
oSC.Language = "JavaScript"
oSC.AddCode(jsCode)
FOR i=0 TO oSC.eval('list.length')-1
    lyText = oSC.run("getList",i,"lotteryDrawNum")
    lztext = oSC.run("getList",i,"lotteryEquipmentCount")
    lmText = oSC.run("getList",i,"lotteryUnsortDrawresult")
    h1 = Substr(lmText ,1,2)
    h2 = Substr(lmText ,4,2)
    h3 = Substr(lmText ,7,2)
    h4 = Substr(lmText ,10,2)
    h5 = Substr(lmText ,13,2)
    l1 = Substr(lmText ,16,2)
    l2 = Substr(lmText ,19,2)
    lztext = ALLTRIM(lztext)
    INSERT INTO 大乐透 VALUES (h1,h2,h3,h4,h5,l1,l2,lyText)
ENDFOR
? SECONDS() - t1 && 1.6秒
2021-06-10 02:23
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
回复 53楼 jinanshui
"lotteryEquipmentCount":2,
lotteryEquipmentCount是数值型,不用做数据类型转换,定义“期号 N(5)”就可以
2021-06-10 07:34
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
lotteryEquipmentCount 的返回值为数值型,所以 lztext = ALLTRIM(lztext) 中不能使用ALLTRIM()
在JSON格式文本中, "lotteryEquipmentCount":2,此时的2表示数值型数据;
如果:"lotteryEquipmentCount":"2",此时的2表示字符型数据;
解析JSON格式文本,最基础的知识必须要掌握。

坚守VFP最后的阵地
2021-06-10 07:43
jinanshui
Rank: 2
等 级:论坛游民
帖 子:274
专家分:64
注 册:2009-10-6
得分:0 
好的,谢谢两位版主
2021-06-10 08:35
sostemp
Rank: 4
等 级:业余侠客
威 望:8
帖 子:162
专家分:221
注 册:2009-6-2
得分:0 
好贴,学习
2022-07-03 22:24



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




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

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