ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[已解决] 抓取 天气网站 历史数据!

[复制链接]

TA的精华主题

TA的得分主题

发表于 2015-10-21 10:06 | 显示全部楼层
YZC51 发表于 2015-10-20 23:31
请教!出现这些乱码,怎么修改!

已经修改好啦!
  1. Sub TQ()

  2.     Application.ScreenUpdating = 0
  3.    
  4.     Set xmlhttp = CreateObject("Microsoft.XMLHTTP")
  5.     With xmlhttp
  6.         .Open "get", "http://tianqi.2345.com/t/wea_history/js/59287_201510.js", False
  7.         .send
  8.         t = StrConv(.responsebody, vbUnicode)
  9.         't = .responsetext
  10.         t1 = Replace(Split(Split(t, "[{ymd:")(1), "},{}]")(0), "ymd:", Chr(10))
  11.         t1 = Replace(t1, "',", ",")
  12.         
  13.         Set reg = CreateObject("vbscript.regexp")
  14.         reg.Pattern = "[a-z:'W]"
  15.         reg.Global = True
  16.         t1 = reg.Replace(t1, "")
  17.         t1 = Replace(t1, "},{", "")

  18.         
  19.     End With
  20.    
  21.     Debug.Print Left(t1, 2000) '& Right(t1, 2000)
  22.    
  23.     With CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
  24.         .SetText t1
  25.         .PutInClipboard
  26.     End With

  27.     With ActiveSheet
  28.         .[a4].Select
  29.         .Paste
  30.         .[a4:a35].TextToColumns Destination:=Range("a4"), Comma:=True
  31.     End With
  32.    
  33.     Set winhttp = Nothing
  34.     Application.StatusBar = False
  35.     Application.ScreenUpdating = True
  36.    
  37. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2015-10-21 10:45 | 显示全部楼层
关纭 发表于 2015-10-21 10:01
我想在http://tianqi.2345.com/wea_history/59287.htm这个网站下载数据。。。并且可以拿到历史月份的数据 ...

请参考11楼的代码!

TA的精华主题

TA的得分主题

发表于 2016-12-19 16:13 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
学习下楼主

TA的精华主题

TA的得分主题

发表于 2019-5-11 17:42 | 显示全部楼层
Sub Tianqi()
Dim str As String

On Error Resume Next

Cells.Delete

t1 = Time

n = 1

For i = 2018 To 2019 '由2011到2019进行循环

For j = 1 To 12 '按1-12月进行循环

If j < 10 Then '给小于10的月份前补数字0(网址需要)

t = 0

Else

t = ""

End If

str = i & t & j

If i = Year(Date) And j > Month(Date) Then Exit For '如果时间大于本月则推出循环,主要是为了不循环今年的后几个月

With ActiveSheet.QueryTables.Add("url;http://www.tianqihoubao.com/lishi/QICHUN/month/" & str & ".html", Range("a" & n)) '天气后报的网址,如果要爬某个城市的天气请把“beijing”改成对应的城市拼音即可

.WebFormatting = xlWebFormattingNone '不包含格式

.WebSelectionType = xlSpecifiedTables '指定table模式

.WebTables = "1" '第1张table

.Refresh False

End With

n = Cells(Rows.Count, 1).End(3).Row + 1

Next

Next

Columns("A:D").Select

ActiveSheet.Range("$A:$D").RemoveDuplicates Columns:=Array(1, 2, 3, 4), Header:=xlNo '删除重复项

Range("C:C,D:D").Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove '插入空行

Columns("B:B").TextToColumns Destination:=Range("B1"), DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar:="/", FieldInfo:=Array(Array(1, 1), Array(2, 1)), TrailingMinusNumbers:=True '分列

Columns("D:D").TextToColumns Destination:=Range("D1"), DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar:="/", FieldInfo:=Array(Array(1, 1), Array(2, 1)), TrailingMinusNumbers:=True '分类

Columns("F:F").TextToColumns Destination:=Range("F1"), DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar:="/", FieldInfo:=Array(Array(1, 1), Array(2, 1)), TrailingMinusNumbers:=True '分类

ColumnCells.Replace " ", "", 2 '去掉空格

Cells.Replace "℃", "", 2 '去掉℃

Range("B1:G1") = Array("白天天气", "夜晚天气", "最高气温", "最低气温", "白天风", "夜晚风")

str1 = Time - t1

MsgBox Format(CDate(str1), "hh:mm:ss")
End Sub

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2019-5-13 15:38 | 显示全部楼层
请参考
Sub Weather()
    Dim strText As String
    Cells.Clear
    n = 2
    For i = 2018 To 2018 '由2019到2019进行循环
        For j = 1 To 12 '按1-12月进行循环
            t = Format(j, "00")
            str1 = i & t
            If i = Year(Date) And j > Month(Date) Then Exit For
            URL = "http://www.tianqihoubao.com/lishi/HAERBIN/month/" & str1 & ".html"
            With CreateObject("MSXML2.XMLHTTP")
                .Open "GET", URL, False
                .setRequestHeader "Connection", "keep-alive"
                .Send
                strText = .responsetext
            End With
            strText = Replace(strText, "风 <", "风 <")
            strText = Replace(strText, "href='", "") '取消链接
'            strText = Replace(strText, "href='", "href='http://www.tianqihoubao.com") '完善链接
            strText = "<table" & Split(Split(strText, "风力风向<")(1), "</table>")(0) & "</table>"
            With CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
                .SetText strText
                .PutInClipboard
            End With
            Range("a" & n).Select
            ActiveSheet.Paste
            n = Cells(Rows.Count, 1).End(3).Row + 1
        Next
    Next
    Range("A1:D1") = Array("日期", "天气状况", "气温", "风力风向")
End Sub

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2019-5-18 11:00 | 显示全部楼层
YZC51 发表于 2019-5-13 15:38
请参考
Sub Weather()
    Dim strText As String

显示N=2 变量未定义 错误

TA的精华主题

TA的得分主题

发表于 2019-5-18 12:15 | 显示全部楼层
zhouhuan29 发表于 2019-5-18 11:00
显示N=2 变量未定义 错误

去掉Option Explicit试试!

TA的精华主题

TA的得分主题

发表于 2019-6-14 21:02 来自手机 | 显示全部楼层
zhouhuan29 发表于 2019-5-11 17:42
Sub Tianqi()
Dim str As String


请问怎么把天气数据直接写入access数据库

TA的精华主题

TA的得分主题

发表于 2019-6-14 21:03 来自手机 | 显示全部楼层
YZC51 发表于 2019-5-13 15:38
请参考
Sub Weather()
    Dim strText As String

请问怎么把天气数据直接写入access数据库

TA的精华主题

TA的得分主题

发表于 2019-6-15 08:41 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
403933 发表于 2019-6-14 21:03
请问怎么把天气数据直接写入access数据库

抱歉,不会用数据库
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

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

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

GMT+8, 2024-4-19 20:13 , Processed in 0.031672 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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