vba xmlhttp 抓取网页(:-日报第2期)

优采云 发布时间: 2022-01-22 22:10

  vba xmlhttp 抓取网页(:-日报第2期)

  子测试()

  暗淡 strRespText$、school$、province&、preUrl$

  昏暗的网址

  school = ThisWorkbook.Sheets(1).Cells(2, 2) '读学校名

  eprovince = ThisWorkbook.Sheets(1).Cells(2, 3) '省读

  preUrl = ThisWorkbook.Sheets(1).Cells(2, 4) '网址读取

  使用 CreateObject("InternetExplorer.Application") '调用互联网

  .可见=真

  .navigate preUrl

  直到 .readystate = 4

  做事件

  环形

  设置 dmt = .document

  dmt.all.tags("select")(10).Value = "山东"

  dmt.all.tags("输入")(8).Value = 学校

  dmt.all.tags("输入")(9).Click

  直到 .readystate = 4

  做事件

  环形

  t = dmt.all.tags("a")(129)

  ThisWorkbook.Sheets(2).Cells(1, 1) = t

  结束于

  with CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") '得到的字符串放入剪贴板,记事本观察数据

  .SetText tt '数据正常显示,可以提取

  .PutInClipboard

  结束于

  结束子

  -------------------------------------------------- -------------------------------------------------- --------分割线---------------------------------------- -------------------------------------------------- ---------- 我的目标:将2008-2012年山东各学校和专业B栏(最低分、最高分、平均分)的招生情况记录到各自的工作表中去。

  *敏*感*词*和想法:

  首先我去指定的网站()看看。查询该校各专业的招生情况,需要经过条件搜索,点击三下链接,才能到达最终结果页面,(... t_2012_shandong .htm)。我分析了这个结果页面,发现schoolpoint之后的参数都可以修改得到对应的结果。我现在需要找到的是参数/539/,它是来自学校对这个网站 ID 编码的。

  然后,我回过头去看了一路跳过的网页的源代码。在第一次搜索的结果网页中,有一个“A”,其NameProp值为school539.htm,其对应的文字正是搜索结果中的学校名称。也就是说,如果我找到这个NameProp,我就可以得到学校的id。

  接下来,我去初始页面()寻找进入搜索结果页面的方法。

  第一阶段,通过合成 urL? 输入字段后,但是输入后,搜索框是乱码,结果是默认的“北大”,无法合成。

  第二阶段,尝试搜索后,发现重定向结果页的UrL不是明码。我尝试将搜索字段转码为UTF-8并再次合成搜索结果页面的URL,但还是不行。仔细对比后发现,系统的地址和我上一段合成的一模一样,只是最后多了一个“&x=3&y=22”之类的字段。在同一个搜索字段中反复试验,发现x和y都是随机的。是的,我猜是防盗链(其实我也不知道防盗链是什么)。因为无法获取正确的地址,所以决定放弃XmlHttp,改用IE。

  第三阶段,IE尝试进入搜索结果页正常,但是结果页完成后,读取新页面的目标数据,发现上一页的值还是上一页的值. 方法清除缓存,但结果还是不行,还是上一页的值。所以很郁闷,卡在这里。

  以下是添加清除缓存功能后的代码,因为DeleteUrlCacheEntry功能不是很懂,请大家指导。

  子测试()

  暗淡 strRespText$、school$、province&、preUrl$

  昏暗的网址

  school = ThisWorkbook.Sheets(1).Cells(2, 2) '读学校名

  eprovince = ThisWorkbook.Sheets(1).Cells(2, 3) '省读

  preUrl = ThisWorkbook.Sheets(1).Cells(2, 4) '读

  使用 CreateObject("internetExplorer.Application")

  .可见=真

  .导航 preUrl

  直到 .readystate = 4

  做事件

  环形

  设置 dmt = .document

  s = dmt.all.tags("a")(129)

  dmt.all.tags("select")(10).Value = eprovince

  dmt.all.tags("输入")(8).Value = 学校

  dmt.all.tags("输入")(9).Click

  DeleteUrlCacheEntry dmt.all '清除缓存

  直到 .readystate = 4

  做事件

  环形

  t = dmt.all.tags("a")(129)

  ThisWorkbook.Sheets(2).Cells(1, 2) = t

  ThisWorkbook.Sheets(2).Cells(1, 1) = s

  结束于

  with CreateObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}") '得到的字符串放入剪贴板,记事本观察数据

  .SetText tt '数据正常显示,可以提取

  .PutInClipboard

  结束于

  结束子

  

  此帖已经同步到谁道天涯-江波的微博

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线