ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[分享] 网页抓取分享

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2014-10-14 07:43 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
分享网抓代码啦!
1.通过百度地图抓取北京地铁1号线附件相关信息
  1. '************************************************************
  2. '作  者: DongYu   QQ:470208739
  3. '************************************************************
  4. Sub 百度地图_北京地铁1号钱()
  5.     Dim url, js, p, slen, i, n
  6.     Set js = CreateObject("scriptcontrol")
  7.     [a2:b20].ClearContents
  8.     js.Language = "jscript"
  9.     For p = 1 To 4
  10.         url = "http://map.baidu.com/"
  11.         url = url & "?newmap=1"
  12.         url = url & "&qt=s"
  13.         url = url & "&c=218"
  14.         url = url & "&wd=北京地铁1号线"
  15.         url = url & "&nn=" & (p - 1) * 10    '第一页是0,第二页是10,第三页是20,以此类推
  16.         url = url & "&ie=utf-8"
  17.         With CreateObject("msxml2.xmlhttp")
  18.             .Open "get", url, False
  19.             .send
  20.             js.addcode ("dy= " & .responsetext)
  21.             slen = js.eval("dy.content.length") - 1
  22.             For i = 0 To slen
  23.                 n = n + 1
  24.                 Cells(n + 1, 1) = js.eval("dy.content[" & i & "].name")
  25.                 Cells(n + 1, 2) = js.eval("dy.content[" & i & "].addr")
  26.                 Cells(n + 1, 3) = js.eval("dy.content[" & i & "].alias")
  27.             Next
  28.         End With
  29.     Next
  30. End Sub
复制代码




评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-10-14 07:51 | 显示全部楼层
本帖最后由 onlycxb 于 2014-10-14 08:04 编辑

地铁一号线0.PNG

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-10-14 07:57 | 显示全部楼层
本帖最后由 onlycxb 于 2014-10-14 08:13 编辑

分享2:抓取北京地铁1号线站名及换乘区间
  1. Option Explicit
  2. '************************************************************
  3. '作  者: DongYu  QQ:470208739
  4. '************************************************************
  5. Sub 北京地铁1号线_站名及换乘区间()
  6.     Dim url, js, p, slen, i, n, str As String, obj As Object
  7.     Set js = CreateObject("scriptcontrol")
  8.     [a2:d200].ClearContents
  9.     js.Language = "jscript"
  10.     url = "http://map.baidu.com/?newmap=1&reqflag=pcmap&biz=1&from=webmap&qt=bsl&bsltp=0&uid=bce557d6f7fadd4ea5da39b7&c=131&tn=B_NORMAL_MAP&nn=0&ie=utf-8&l=12&t=" & Rnd() & "" '1号线
  11.     With CreateObject("msxml2.xmlhttp")
  12.         .Open "get", url, False
  13.         .send
  14.         js.AddCode ("dy= " & .responsetext)
  15.         Cells(1, 1) = "所属公司:": Cells(1, 2) = js.Eval("dy.content[0].company")
  16.         Cells(2, 1) = "运行区间:": Cells(2, 2) = js.Eval("dy.content[0].name")
  17.         Cells(3, 1) = "运行时间:": Cells(3, 2) = js.Eval("dy.content[0].timetable")
  18.         Cells(5, 1) = "序号": Cells(5, 2) = "站名":: Cells(5, 3) = "换乘"
  19.         slen = js.Eval("dy.content[0].stations.length") - 1
  20.         n = 5
  21.         For i = 0 To slen
  22.             n = n + 1
  23.             Cells(n, 1) = n - 5
  24.             Cells(n, 2) = js.Eval("dy.content[0].stations[" & i & "].name")
  25.             On Error Resume Next
  26.             Set obj = js.Eval("dy.content[0].stations[" & i & "].transfer")
  27.             If Not obj Is Nothing Then Cells(n, 3) = js.Eval("dy.content[0].stations[" & i & "].transfer[0][0].name")
  28.         Next
  29.     End With
  30. End Sub

复制代码
地铁一号线.PNG

TA的精华主题

TA的得分主题

发表于 2014-10-14 07:58 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
    没 有 附 件 ?

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-10-14 08:06 | 显示全部楼层
少如 发表于 2014-10-14 07:58
没 有 附 件 ?

复制代码到excel VBE编辑器运行即可

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-10-14 08:25 | 显示全部楼层
分享3:抓取球队数据
  1. Sub 按钮1_单击()
  2.     Dim url, html, js
  3.     url = "http://nba.win007.com/jsData/matchResult/13-14/l1_1_2013_11.js?version=2014100422"
  4.     Set html = CreateObject("htmlfile")
  5.     Set js = CreateObject("scriptcontrol")
  6.     js.Language = "jscript"
  7.     With CreateObject("msxml2.xmlhttp")
  8.         .Open "get", url, False
  9.         .send
  10.         s = .responsetext
  11.         Debug.Print s
  12.         js.addcode (s)
  13.         slen = js.eval("arrData.length") - 1
  14.         sslen = js.eval("arrData[0].length") - 1
  15.         l = js.eval("arrTeam.length") - 1
  16.         js.eval ("球队数据=[]")
  17.         For i = 0 To l
  18.             s1 = js.eval("arrTeam[" & i & "][0]")
  19.             s2 = js.eval("arrTeam[" & i & "][1]")
  20.             js.eval ("球队数据[" & s1 & "]=""" & s2 & """")
  21.         Next
  22.         For i = 0 To slen
  23.             For j = 0 To sslen
  24.             If j = 4 Or j = 3 Then
  25.                 ss = js.eval("arrData[" & i & "][" & j & "]")
  26.                 Cells(i + 2, j + 1) = js.eval("球队数据[" & ss & "]")
  27.             Else
  28.                 Cells(i + 2, j + 1) = js.eval("arrData[" & i & "][" & j & "]")
  29.             End If
  30.             Next
  31.         Next
  32.     End With
  33. End Sub
复制代码
捕获1.PNG

TA的精华主题

TA的得分主题

发表于 2014-10-14 09:02 | 显示全部楼层
大神啊,能否指示下怎么获得这些链接呢?

TA的精华主题

TA的得分主题

发表于 2014-10-14 09:07 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
楼主的代码有点像我写的,特别是1楼第15行上的注解。

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-10-14 10:11 | 显示全部楼层
suwenkai 发表于 2014-10-14 09:07
楼主的代码有点像我写的,特别是1楼第15行上的注解。

没错。学习的就是你的代码。你查的是武汉  公园

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-10-14 10:16 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 onlycxb 于 2014-10-14 18:59 编辑

分享4:论坛问题http://club.excelhome.net/thread-1158114-1-1.html
         抓取东方财富网数据
  1. 'Option Explicit
  2. '************************************************************
  3. '作  者: DongYu  QQ:470208739    2014/10/14
  4. '************************************************************
  5. Sub 沪深A股()
  6. '需求:抓取http://data.eastmoney.com/cmjzd/,抓取沪深A股
  7.     Dim xml As New MSXML2.XMLHTTP, strTxt As String, Url As String, js, Slen As Integer
  8.     Dim i As Integer, arr, j
  9.     Cells.ClearContents
  10.     Url = "http://datainterface.eastmoney.com/EM_DataCenter/JS.aspx?type=GG&sty=GDRS&st=2&sr=true&p=1&ps=50&js=var%20ZWsofIjH={pages:(pc),data:[(x)]}&mkt=1&fd=2014-9-30&rt=47108232"
  11.     With xml
  12.         .Open "GET", Url, False
  13.         .send
  14.         strTxt = Split(.responseText, "var ZWsofIjH=")(1)
  15.     End With
  16.     Set js = CreateObject("scriptcontrol")
  17.     js.Language = "jscript"
  18.     js.AddCode ("dy= " & strTxt)
  19.     Slen = js.eval("dy.data.length") - 1
  20.     ReDim arr(1 To Slen + 1, 1 To 14)
  21.     For i = 0 To Slen
  22.         For j = 1 To 12
  23.             arr(i + 1, j) = Split(js.eval("dy.data[" & i & "]"), ",")(j - 1)
  24.         Next j
  25.     Next i
  26.     With Sheet1
  27.         .[b2].Resize(UBound(arr, 1), UBound(arr, 2)) = arr
  28.         For i = 2 To UBound(arr, 1) + 1
  29.             .Cells(i, 1) = i - 1
  30.             .Cells(i, 2).NumberFormatLocal = "000000"
  31.             If Abs(.Cells(i, 5)) > 1 Then .Cells(i, 5) = "-" Else .Cells(i, 5).NumberFormatLocal = "0.00%"
  32.             .Cells(i, 6) = Round(.Cells(i, 6))
  33.             '其他省略..
  34.         Next i
  35.     End With
  36. End Sub

复制代码
为方便阅读代码,附数据结构图
JS数据结构如图.PNG
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-12 02:43 , Processed in 0.028082 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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