ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] vba爬取网页 提示 拒绝访问!求助

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-8-30 16:54 | 显示全部楼层 |阅读模式
之前我爬取都很正常,突然就不行了,我也很好奇。请各位大师帮忙下!

房产数据爬取网页V1.1 - 副本.rar

52.94 KB, 下载次数: 19

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-8-30 17:23 | 显示全部楼层
Sub Main_fangtianxia1()
    Dim i As Long, C As Integer
    Dim arr
    Dim l_n As Long
    Dim liem
    Dim a As String, b As String
    Dim t
    Dim e As Object
    Dim ys As Integer
    Dim shuzu()
    Application.ScreenUpdating = False
    t = Timer
    Range("a1:J10000").Cells.ClearContents
    liem = Array("楼盘名称", "均价", "地址", "装修状态", "户数", "交付时间", "开盘时间", "销售状态", "区域楼盘", "物业类别")
        Range("A1:J1") = liem
    With CreateObject("MSXML2.XMLHTTP")
      .Open "GET", "http://newhouse.nb.fang.com/house/s/", False
'      .setRequestHeader "If-Modified-Since", "0"
      .Send
       a = StrConv(.ResponseBody, vbUnicode, &H804)
       ys = Split(Split(a, "</span>/")(1), "&nbsp")(0)
    End With
ReDim shuzu(1 To 20 * ys, 1 To 10)
l_n = Range("A65536").End(xlUp).Row + 1
  For C = 1 To ys
    Set e = CreateObject("MSXML2.XMLHTTP")
        e.Open "GET", "http://newhouse.nb.fang.com/house/s/b9" & C & "/?ctm=1.nb.xf_search.page." & C + 1, False
'        e.setRequestHeader "If-Modified-Since", "0"
        e.Send
        a = StrConv(e.ResponseBody, vbUnicode, &H804) '&H804 简体中文
        arr = Split(a, "class=""duibi"" onclick=""add('")
        For i = 1 To UBound(arr)
            arr(i) = Split(arr(i), "','")(0)
            arr(i) = "http://chengshizhiguanghd.fang.com/house/" & arr(i) & "/housedetail.htm"
            e.Open "GET", arr(i), False
            e.Send
            b = StrConv(e.ResponseBody, vbUnicode, &H804)
            shuzu(i + (C - 1) * 20, 1) = Split(Split(b, "<span  title=""")(1), "楼盘详情")(0)
            shuzu(i + (C - 1) * 20, 2) = Split(Split(b, "格:</span><em>" & Chr(10))(1), "</em></div>")(0)
            shuzu(i + (C - 1) * 20, 3) = Split(Split(b, "<div class=""list-right-text"">")(2), "</div>")(0)
            shuzu(i + (C - 1) * 20, 4) = Split(Split(Split(b, "装修状况:</div>")(1), ">" & Chr(10))(1), "<")(0)
            shuzu(i + (C - 1) * 20, 5) = Split(Split(Split(b, "</i>数:</div>")(1), ">")(1), "<")(0)
            shuzu(i + (C - 1) * 20, 6) = Split(Split(Split(b, "交房时间:</div>")(1), ">")(1), "<")(0)
            shuzu(i + (C - 1) * 20, 7) = Split(Split(Split(b, "盘时间:</div>")(1), ">")(1), "<")(0)
            shuzu(i + (C - 1) * 20, 8) = Split(Split(Split(b, "销售状态:</div>")(1), ">" & Chr(10))(1), "<")(0)
            shuzu(i + (C - 1) * 20, 9) = Split(Split(b, "楼盘"">")(1), "</")(0)
            shuzu(i + (C - 1) * 20, 10) = Split(Split(b, "<div class=""list-right"" title=""")(1), """")(0)
        Next
    Set e = Nothing
   Next
    Range("A" & l_n).Resize(UBound(shuzu), 10) = shuzu
    Erase shuzu
    MsgBox Timer - t
    Application.ScreenUpdating = True
End Sub
代码如上,我研究半天都解决不了,请各位大师帮忙啊

TA的精华主题

TA的得分主题

发表于 2018-8-30 19:32 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2018-8-30 20:01 | 显示全部楼层
网址改了:http://nb.newhouse.fang.com/house/s
  1. Sub Main_fangtianxia()
  2.     Dim i As Long, C As Integer
  3.     Dim arr
  4.     Dim l_n As Long
  5.     Dim liem
  6.     Dim a As String, b As String
  7.     Dim t
  8.     Dim e As Object
  9.     Dim ys As Integer
  10.    ' Dim shuzu()
  11.     Application.ScreenUpdating = False
  12.     t = Timer
  13.     Range("a1:i10000").Cells.ClearContents
  14.     liem = Array("楼盘名称", "均价", "地址", "装修状态", "户数", "交付时间", "开盘时间", "销售状态", "区域楼盘", "物业类别")
  15.         Range("A1:J1") = liem
  16.     With CreateObject("MSXML2.XMLHTTP")
  17.       .Open "GET", "http://nb.newhouse.fang.com/house/s/", False
  18. '      .setRequestHeader "If-Modified-Since", "0"
  19.       .Send
  20.        a = StrConv(.ResponseBody, vbUnicode, &H804)
  21.        ys = Split(Split(a, "</span>/")(1), "&nbsp")(0)
  22.     End With
  23.   For C = 1 To ys
  24.     Set e = CreateObject("MSXML2.XMLHTTP")
  25.         e.Open "GET", "http://nb.newhouse.fang.com/house/s/b9" & C & "/?ctm=1.nb.xf_search.page." & C + 1, False
  26. '        e.setRequestHeader "If-Modified-Since", "0"
  27.         e.Send
  28.         a = StrConv(e.ResponseBody, vbUnicode, &H804) '&H804 简体中文
  29.         a = Replace(a, Chr(10), "")
  30.         arr = Split(a, "class=""duibi"" onclick=""add('")
  31.        ' ReDim shuzu(1 To UBound(arr), 1)
  32.         For i = 1 To UBound(arr)
  33.             l_n = Range("A65536").End(xlUp).Row + 1
  34.             arr(i) = Split(arr(i), "','")(0)
  35.             arr(i) = "http://chengshizhiguanghd.fang.com/house/" & arr(i) & "/housedetail.htm"
  36.             e.Open "GET", arr(i), False
  37.             e.Send
  38.             b = StrConv(e.ResponseBody, vbUnicode, &H804)
  39.             b = Replace(b, Chr(10), "")
  40.             b = Replace(b, Chr(32), "")
  41.             Cells(l_n, 1).Value = Split(Split(b, "<spantitle=""")(1), "楼盘详情")
  42.             Cells(l_n, 2).Value = Split(Split(b, "格:</span><em>")(1), "</em></div>")
  43.             Cells(l_n, 3).Value = Split(Split(b, "楼盘地址:</div><divclass=""list-right-text"">")(1), "</div>")
  44.             Cells(l_n, 4).Value = Split(Split(b, "装修状况:</div><divclass=""list-right"">")(1), "<")
  45.             Cells(l_n, 5).Value = Split(Split(b, "</i>数:</div><divclass=""list-right"">")(1), "</div>")
  46.             Cells(l_n, 6).Value = Split(Split(b, "交房时间:</div><divclass=""list-right"">")(1), "</div>")
  47.             Cells(l_n, 7).Value = Split(Split(b, "盘时间:</div><divclass=""list-right"">")(1), "<")
  48.             Cells(l_n, 8).Value = Split(Split(b, "销售状态:</div><divclass=""list-right"">")(1), "</div>")
  49.             Cells(l_n, 9).Value = Split(Split(b, "楼盘"">")(1), "</")(0)
  50.             Cells(l_n, 10).Value = Split(Split(b, "<divclass=""list-right""title=""")(1), """")
  51.         Next
  52. '        Range("A" & l_n).Resize(UBound(shuzu), 1) = shuzu
  53.     Erase arr
  54.     Set e = Nothing
  55.    Next
  56.     MsgBox Timer - t
  57.     Application.ScreenUpdating = True
  58. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2018-8-30 20:50 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-8-31 08:39 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
719404338 发表于 2018-8-30 20:01
网址改了:http://nb.newhouse.fang.com/house/s

谢谢啊。,我以为我代码写错了。。

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-8-31 08:41 | 显示全部楼层
chentonny 发表于 2018-8-30 20:50
URL改了,用你原来的URL取不到数据。

这个爬取网页,还要时不时的修改一下URL了,谢谢了
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-13 07:47 , Processed in 0.024378 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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