ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] Excel

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-3-12 15:39 | 显示全部楼层 |阅读模式
由于自己是个计算机白痴,又急需获取PM2.5数据,但数据量多达几千页,请问怎样可以快速提取网页的多页数据网址是http://sthjt.ah.gov.cn/pages/SJZX_List.aspx?CityCode=340100&LX=4&KSSJ=2017-01-01%2000&JSSJ=2017-12-31%2023&page=1 搜狗截图20190312153755.png

TA的精华主题

TA的得分主题

发表于 2019-3-12 16:04 | 显示全部楼层
可以用Excel的数据导入功能,数据 - 来自网站

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-3-12 20:08 | 显示全部楼层
kimmyyang 发表于 2019-3-12 16:04
可以用Excel的数据导入功能,数据 - 来自网站

可以批量导入吗

TA的精华主题

TA的得分主题

发表于 2019-3-13 09:20 | 显示全部楼层
可以,但是无法自动翻页,我看了你那个网站数据,其实用python爬虫的话,很容易。

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-3-13 16:55 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
没学过编程

TA的精华主题

TA的得分主题

发表于 2019-3-13 17:48 | 显示全部楼层
kimmyyang 发表于 2019-3-13 09:20
可以,但是无法自动翻页,我看了你那个网站数据,其实用python爬虫的话,很容易。

他这个翻页应该也不难  URL里有“page=1”这样的字样 用循环估计就可以

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-3-14 22:52 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
autolzg 发表于 2019-3-13 17:48
他这个翻页应该也不难  URL里有“page=1”这样的字样 用循环估计就可以

什么是循环

TA的精华主题

TA的得分主题

发表于 2019-3-16 12:35 | 显示全部楼层
  1. Sub 抓取数据()
  2.     Dim str$, URL$, s1$, s2$, s3$, i%, arr, brr, xHttp As Object
  3.     If ([N4] > [N3] Or [N4] < 1) Then
  4.         MsgBox ("输入有误!")
  5.         Exit Sub
  6.     End If
  7.     For i = (Range("N1").Value + 1) To (Range("N4").Value + Range("N1").Value)    '最大 3118页
  8.         URL = "http://sthjt.ah.gov.cn/pages/SJZX_List.aspx?CityCode=340100&LX=4&KSSJ=2017-01-01%2000&JSSJ=2017-12-31%2023&page=" & i
  9.         s1 = " widtd=""80px"" algin=""center"""
  10.         s2 = " widtd=""60px"" algin=""center"""
  11.         s3 = " algin=""center"" height=""26px"""
  12.         Set xHttp = CreateObject("Microsoft.XMLHTTP")
  13.         xHttp.Open "GET", URL, False
  14.         xHttp.send
  15.         str = xHttp.responseText
  16.         str = Replace(Replace(Replace(Split(Split(str, "</table>")(0), "主要污染物")(1), s1, ""), s2, ""), s3, "")
  17.         arr = Split(str, "<tr>")
  18.         ReDim brr(1 To UBound(arr), 1 To 11)
  19.         For j = 1 To UBound(arr)
  20.             For k = 1 To 11
  21.                 brr(j, k) = Trim(Replace(Replace(Replace(Replace(Replace(Split(arr(j), "<td>")(k), "</td>", ""), vbCr, ""), vbLf, ""), vbCrLf, ""), "</tr>", ""))
  22.             Next k
  23.         Next j
  24.         Range("A1000000").End(3).Offset(1, 0).Resize(UBound(arr), 11) = brr
  25.     Next i
  26.     [N1] = i - 1
  27. End Sub
复制代码


不会用正则表达式,所以用了很繁杂的字符串函数去处理

抓取数据 - 副本.zip (19.31 KB, 下载次数: 3)

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-3-23 15:03 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
问题已解决,谢谢各位
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-4-20 08:50 , Processed in 0.037107 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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