ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: 1234vba

[求助] 很奇怪的一个网页内容,如何爬取到想要的数据,XML?

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-8-6 19:35 | 显示全部楼层
duquancai 发表于 2018-8-5 14:29
按照1楼 提供附件  ,代码如下:

老师好。。。


我复制代码 。放进表格。。

执行 报错。。

这个是字体错误吗?

要如何解决。。我设置字体为  宋体 也不行呀。

QQ截图20180806193351.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-8-6 19:38 | 显示全部楼层
老师好
所有的 段的内容,比如   "issue"," 还要 倒序呢

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-8-8 08:18 | 显示全部楼层
duquancai 发表于 2018-8-5 14:29
按照1楼 提供附件  ,代码如下:


老师好。。我把代码直接加 进去,
获取不到数据哦。。
什么原因呢?

Sub GetData1()
    Dim tt As String, winhttp, js As Object, s$, json$
    Set winhttp = CreateObject("Microsoft.XMLHTTP")
    With winhttp
        .Open "GET", "http://www.pm25.in/api/querys/pm2_5.json?city=%E5%8C%97%E4%BA%AC&token=5j1znBVAsnSf5xQyNQyq", False
        .Send
        s = .responsetext
        Debug.Print s
        Set js = CreateObject("MSScriptControl.ScriptControl")
        js.Language = "JavaScript": js.AddObject "g", Range("a1")
        json = "a=" & s & ";for(i=0;i<a.length;i++){g(i+1,1)=a.issue;b=a.code.split(',');for(j=0;j<b.length;j++)g(i+1,j+2)=b[j]};"
        js.eval json
    End With
End Sub

TA的精华主题

TA的得分主题

发表于 2018-8-9 17:26 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 Kaohsing 于 2018-8-9 18:35 编辑
1234vba 发表于 2018-8-8 08:18
老师好。。我把代码直接加 进去,
获取不到数据哦。。
什么原因呢?

这个网址http://www.pm25.in/api/querys/pm2_5.json?city=%E5%8C%97%E4%BA%AC&token=5j1znBVAsnSf5xQyNQyq返回的数据如下
[{"aqi":49,"area":"北京","pm2_5":0,"pm2_5_24h":26,"position_name":"万寿西宫","primary_pollutant":null,"quality":"优","station_code":"1001A","time_point":"2018-08-09T16:00:00Z"},
{"aqi":92,"area":"北京","pm2_5":21,"pm2_5_24h":14,"position_name":"定陵",
"primary_pollutant":"臭氧1小时","quality":"良","station_code":"1002A","time_point":"2018-08-09T16:00:00Z"},
{"aqi":87,"area":"北京","pm2_5":0,"pm2_5_24h":20,"position_name":"东四","primary_pollutant":"臭氧1小时","quality":"良","station_code":"1003A","time_point":"2018-08-09T16:00:00Z"},{"aqi":70,"area":"北京","pm2_5":19,"pm2_5_24h":26,"position_name":"天坛","primary_pollutant":"臭氧1小时","quality":"良","station_code":"1004A","time_point":"2018-08-09T16:00:00Z"},{"aqi":113,"area":"北京","pm2_5":24,"pm2_5_24h":26,"position_name":"农展馆","primary_pollutant":"臭氧1小时","quality":"轻度污染","station_code":"1005A","time_point":"2018-08-09T16:00:00Z"},{"aqi":93,"area":"北京","pm2_5":24,"pm2_5_24h":26,"position_name":"官园","primary_pollutant":"臭氧1小时","quality":"良
","station_code":"1006A","time_point":"2018-08-09T16:00:00Z"},{"aqi":78,"area":"北京","pm2_5":21,"pm2_5_24h":23,"position_name":"海淀区万柳","primary_pollutant":"臭氧1小时","quality":"良","station_code":"1007A","time_point":"2018-08-09T16:00:00Z"},{"aqi":130,"area":"北京","pm2_5":47,"pm2_5_24h":31,"position_name":"顺义新城","primary_pollutant":"臭氧1小时","quality":"轻度污染","station_code":"1008A","time_point":"2018-08-09T16:00:00Z"},{"aqi":45,"area":"北京","pm2_5":0,"pm2_5_24h":4,"position_name":"怀柔镇","primary_pollutant":null,"quality":"优","station_code":"1009A","time_point":"2018-08-09T16:00:00Z"},{"aqi":93,"area":"北京","pm2_5":17,"pm2_5_24h":17,"position_name":"昌平镇","primary_pollutant":"臭氧1小时","quality":"良","station_code":"1010A","time_point":"2018-08-09T16:00:00Z"},{"aqi":94,"area":"北京","pm2_5":0,"pm2_5_24h":13,"position_name":"奥体中心","primary_pollutant":"臭氧1小时","quality":"良","station_code":"1011A","time_point":"2018-08-09T16:00:00Z"},{"aqi":85,"area":"北京","pm2_5":22,"pm2_5_24h"
:21,"position_name":"古城","primary_pollutant":"臭氧1小时","quality":"良","station_code":"1012A","time_point":"2018-08-09T16:00:00Z"},{"aqi":90,"area":"北京","pm2_5":24,"pm2_5_24h":20,"position_name":null,"primary_pollutant":"臭氧1小时","quality":"良","station_code":null,"time_point":"2018-08-09T16:00:00Z"}]
这里面没有叫“code”的键,所以这一句通不过b=a.code.split(',');就出错


TA的精华主题

TA的得分主题

 楼主| 发表于 2018-9-5 07:38 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
duquancai 发表于 2018-8-5 14:29
按照1楼 提供附件  ,代码如下:

老师早上好。。。

老师的代码
现在换成 这个格式的。代码运行后报错、、

之前的是112个字符

现在的是119个字符,要如何改进代码呢,谢谢

{"ttery":"b10","issue":"1702084","code":"01,05,02,07,10,09,06,08,04,03","code1":null,"code2":null,"time":1536046966000}

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-9-5 07:41 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 1234vba 于 2018-9-5 07:50 编辑

谢谢老师的解答、、

这段代码 对下面这段字符串处理 出错。。出错在哪里呢?



  1. Sub main()

  2.     Dim js As Object, s$, json$

  3.    s = [n1] '假设数据在N1

  4.     Set js = CreateObject("MSScriptControl.ScriptControl")

  5.     js.Language = "JavaScript": js.AddObject "g", Range("a1")

  6.     json = "a=" & s & ";for(i=0;i<a.length;i++){g(i+1,1)=a[i].issue;b=a[i].code.split(',');for(j=0;j<b.length;j++)g(i+1,j+2)=b[j]};"

  7.     js.eval json

  8. End Sub

复制代码


[{"ttery":"b10","issue":"1702084","code":"01,05,02,07,10,09,06,08,04,03","code1":null,"code2":null,"time":1536046966000}]

TA的精华主题

TA的得分主题

发表于 2018-9-5 10:05 | 显示全部楼层
1234vba 发表于 2018-9-5 07:41
谢谢老师的解答、、

这段代码 对下面这段字符串处理 出错。。出错在哪里呢?
  1. Sub main()

  2.     Dim js As Object, s$, json$

  3.     s = "[{""ttery"":""b10"",""issue"":""1702084"",""code"":""01,05,02,07,10,09,06,08,04,03"",""code1"":null,""code2"":null,""time"":1536046966000}]"

  4.     Set js = CreateObject("MSScriptControl.ScriptControl")

  5.     js.Language = "JavaScript": js.AddObject "g", Range("a27")

  6.     json = "a=" & s & ";for(i=0;i<a.length;i++){g(i+1,1)=a[i].issue;b=a[i].code.split(',');for(j=0;j<b.length;j++)g(i+1,j+2)=b[j]};"

  7.    js.eval (json)

  8. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-9-5 19:36 来自手机 | 显示全部楼层
Kaohsing 发表于 2018-9-5 10:05

老师晚上好。。代码似乎没改,代码ok的吗

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-9-6 18:44 | 显示全部楼层
本帖最后由 1234vba 于 2018-9-6 18:52 编辑

老师晚上好。。
再次打扰一下。。。

原先代码是对code字段的数据做分割处理
我的目的是。不做split处理。
issue段数据写在A列
code段数据写在B列 即可

  1. b=a[i].code.split(',');
复制代码

我删除 后面的 split代码。。

直接改成

  1. json = "a=" & ss & ";for(i=0;i<a.length;i++){g(i+1,1)=a[i].issue;b=a[i].code;for(j=0;j<b.length;j++)g(i+1,j+2)=b[j]};"
复制代码



代码 只能获得 issue段的。code段的数据 并没有获得。。

这个代码又要如何修改呢。?
谢谢

TA的精华主题

TA的得分主题

发表于 2018-9-7 11:30 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
解析不难,网址是什么?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-1-13 15:44 , Processed in 0.025539 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表