找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 19893|回复: 6

[原创] 关于如何用vbs爬网站

[复制链接]
发表于 2023-2-20 18:58:29 | 显示全部楼层 |阅读模式
一般来说只要你不去爬什么正版小说,正版漫画网站,犯不着也用不着header
那么我就让大家在一分钟内学会如何用vbs爬取网站
1:获取网页、图片
如果你的对象是一个图片(或者是其他非文本文件),那么请把“responsetext”改成“responsebody”,再用adodb.stream写入图片文件
  1. function gethtml(byval url)
  2. with createobject("msxml2.xmlhttp")
  3. .open "GET",url,false
  4. .send
  5. gethtml=.responsetext
  6. end with
  7. end function
复制代码
2:处理html
如果你只是想要获取某个img的url,我建议你直接操作字符串,即利用instr(startplace,string,string)
如果你想批量,或者获取某个div里的文字,而那些文字有大有小(混了一大堆标签),那么我建议你用htmlfile
  1. with createobject("htmlfile")
  2. .designmode="on" '在这里非常重要,htmlfile似乎是ie5或6的com版,所以不支持许多新的东西,而且网页上通常不会写完整的url,所以没有这一步会疯狂报错
  3. .write gethtml("https://www.baidu.com")
  4. set baiduid=.getelementbyid("id")
  5. end with
复制代码
接着就是dom操作了
注意,htmlfile没有getelementbyclass,所以很多时候还没有字符串操作来的简单快捷!
乘着ie还在,还是多用用ie吧
发表于 2023-2-20 22:07:45 | 显示全部楼层
面对好东西,可怜我一点不懂vbs,其他的也不懂。
发表于 2023-2-21 00:13:48 | 显示全部楼层
我来狗尾续貂一下,
动态页面用ie对象(internetexplorer.application)
少量信息可以直接上正则(VBScript.RegExp或者直接new RegExp)处理文本
以后微软如果把ie对象删了,可以用py的selenium代替
htmlfile可以用py的beautifulsoup代替
正则和普通字符串处理自不必说
 楼主| 发表于 2023-2-21 19:12:13 | 显示全部楼层
回复 3# 老刘1号


    py是指python吗 vbs怎么调用python的库呢?
话说为什么vbs的都很反感使用第三方的com,但是bat非常乐意用奇奇怪怪的exe
发表于 2023-2-21 22:04:52 | 显示全部楼层
回复 4# jyswjjgdwtdtj


    我的意思是直接换python(大雾
也不一定吧,我加的一个vbs群有人天天用dwx和大漠
 楼主| 发表于 2023-3-3 21:21:37 | 显示全部楼层
一个非常简单 易懂的爬虫实例
不要想着去爬那种正规网站 乱七八糟的加密js和ajax传来传去会把你搞崩溃的
还是这种把图片挂到图床上的好
  1. Set http = CreateObject("Msxml2.XMLHTTP")
  2. set fso=createobject("scripting.filesystemobject")
  3. Set document = CreateObject("htmlfile")
  4. Set ado = createobject("Adodb.Stream")
  5. set wshell=createobject("wscript.shell")
  6. document.designmode="on"
  7. document.write gethtml("https://www.mhua5.com/comic-wangyouzhijinzhanfashi.html","text")
  8. function gethtml(byval url,byval t_b)
  9.         with http
  10.                 .open "GET",url,false
  11.                 .send
  12.                 if t_b="text" then
  13.                         gethtml=.responsetext
  14.                 elseif t_b="binary" then
  15.                         gethtml=.responsebody
  16.                 end if
  17.         end with
  18. end function

  19. sub writeb(target,htmlbody)
  20.         ado.Type = 1
  21.         ado.Open
  22.         ado.Write htmlbody
  23.         ado.SaveToFile target
  24.         ado.Close
  25. End Sub

  26. title=replace(document.title," ","")
  27. fso.createfolder title
  28. set j_chapter=document.getelementsbytagname("A")
  29. for each j in j_chapter
  30. if j.classname="j-chapter-link" then
  31.         nowfolder=replace(title&""&j.innertext," ","")
  32.         fso.createfolder nowfolder
  33.         set document1=createobject("htmlfile")
  34.         document1.designmode="on"
  35.         document1.write gethtml(replace(j.href,"about:","https://www.mhua5.com"),"text")
  36.         z=0
  37.         for each i in document1.getelementsbytagname("IMG")
  38.                 if i.classname="lazy-read" then       
  39.                         z=z+1
  40.                         writeb nowfolder&""&z&".jpeg",gethtml(replace(i.getattribute("data-original"),"http://","https://"),"binary")'这里的replace是因为源代码里httphttps写错了(可能是为了坑别人?)
  41.                 end if
  42.         next
  43. end if
  44. next
复制代码
发表于 2023-3-3 21:29:13 | 显示全部楼层
回复  jyswjjgdwtdtj


    我的意思是直接换python(大雾
也不一定吧,我加的一个vbs群有人天天用dwx ...
老刘1号 发表于 2023-2-21 22:04



    我看到你前面那段的时候就想说,干脆全套python了。拉到下面果然不用说
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-16 21:22 , Processed in 0.020287 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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