ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 如何采集理想社区荐股大赛的参赛会员和比赛成绩

如何采集理想社区荐股大赛的参赛会员和比赛成绩

作者:绿色风 分类: 时间:2022-08-17 浏览:151
楼主
xmyjk
Q:如何用VBA 收集理想论坛荐股大赛的的各参赛会员的荐股(标签【参赛会员】)以及排名(标签【成绩排名】)。

链接:http://www.55188.com/viewthread.php?tid=4686774&extra=page%3D1%26amp%3Bfilter%3Dtype%26amp%3Btypeid%3D153

就是:
  如何通过VBA把该贴中楼主首贴【参赛会员】(有205个)和【成绩排名】(有90个)下的各信息收集到两个工作表中(见附件)。注意默认只加载了一部分,浏览网页时拖动鼠标才会加载其余的部分。怎么才能VBA读取所有的记录(这里分别是205个和90个)?

A:通过抓包分析工具,得知,可通过以下两个链接,取得数据:
http://www.55188.com/viewthread.php?tid=4686774&ajaxlist=5&begin=0&loop=500
http://www.55188.com/viewthread.php?tid=4686774&ajaxlist=6&begin=0&loop=500

获取参赛会员的代码:
  1. Option Explicit
  2. Sub test()
  3.     Dim tmp() As String, i As Integer, arr() As String, xmlhttp As Object, N As Long
  4.     [A1].CurrentRegion.Offset(1).Clear
  5.     Set xmlhttp = CreateObject("Microsoft.XMLHTTP")
  6.     With xmlhttp
  7.         .Open "get", "http://www.55188.com/viewthread.php?tid=4686774&ajaxlist=5&begin=0&loop=500", False
  8.         .send
  9.         tmp = Filter(Split(Replace(Replace(Replace(.responsetext, "<div", "<td class="), "</div>", "</td>"), "</a>", ""), "</td>"), "<td class=")
  10.     End With
  11.     ReDim arr(UBound(tmp) \ 6, 5)
  12.     For i = 0 To UBound(tmp)
  13.         arr(i \ 6, i Mod 6) = Split(tmp(i), ">")(UBound(Split(tmp(i), ">")))
  14.     Next
  15.     [a2].Resize(UBound(arr) + 1, UBound(arr, 2) + 1) = arr
  16.     [a:e].Columns.AutoFit
  17.     Erase tmp
  18.     Erase arr
  19.     Set xmlhttp = Nothing
  20.    
  21.     MsgBox "Ok"
  22. End Sub
获取比赛成绩的代码:
  1. Option Explicit
  2. Sub test1()
  3.     Dim tmp() As String, i As Integer, arr() As String, xmlhttp As Object, N As Long
  4.     [A1].CurrentRegion.Offset(1).Clear
  5.     Set xmlhttp = CreateObject("Microsoft.XMLHTTP")
  6.     With xmlhttp
  7.         .Open "get", "http://www.55188.com/viewthread.php?tid=4686774&ajaxlist=6&begin=0&loop=500", False
  8.         .send
  9.         tmp = Filter(Split(Replace(Replace(Replace(Replace(Replace(Replace(.responsetext, "</span>", ""), "<td class=""pid"">", ""), "<br /><span>", vbCrLf), "<div", "<td class="), "</div>", "</td>"), "</a>", ""), "</td>"), "<td class=")
  10.     End With
  11.     ReDim arr(UBound(tmp) \ 9, 8)
  12.     For i = 0 To UBound(tmp)
  13.         arr(i \ 9, i Mod 9) = Split(tmp(i), ">")(UBound(Split(tmp(i), ">")))
  14.     Next
  15.     [a2].Resize(UBound(arr) + 1, UBound(arr, 2) + 1) = arr
  16.     [a:e].Columns.AutoFit
  17.     Erase tmp
  18.     Erase arr
  19.     Set xmlhttp = Nothing

  20.     MsgBox "Ok"
  21. End Sub

理想论坛.zip
2楼
亡者天下
厉害,学习了!
3楼
水星钓鱼
学习
4楼
老糊涂
学习

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap