Board logo

标题: [原创] 关于如何用vbs爬网站 [打印本页]

作者: jyswjjgdwtdtj    时间: 2023-2-20 18:58     标题: 关于如何用vbs爬网站

一般来说只要你不去爬什么正版小说,正版漫画网站,犯不着也用不着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吧
作者: hlzj88    时间: 2023-2-20 22:07

面对好东西,可怜我一点不懂vbs,其他的也不懂。
作者: 老刘1号    时间: 2023-2-21 00:13

我来狗尾续貂一下,
动态页面用ie对象(internetexplorer.application)
少量信息可以直接上正则(VBScript.RegExp或者直接new RegExp)处理文本
以后微软如果把ie对象删了,可以用py的selenium代替
htmlfile可以用py的beautifulsoup代替
正则和普通字符串处理自不必说
作者: jyswjjgdwtdtj    时间: 2023-2-21 19:12

回复 3# 老刘1号


    py是指python吗 vbs怎么调用python的库呢?
话说为什么vbs的都很反感使用第三方的com,但是bat非常乐意用奇奇怪怪的exe
作者: 老刘1号    时间: 2023-2-21 22:04

回复 4# jyswjjgdwtdtj


    我的意思是直接换python(大雾
也不一定吧,我加的一个vbs群有人天天用dwx和大漠
作者: jyswjjgdwtdtj    时间: 2023-3-3 21:21

一个非常简单 易懂的爬虫实例
不要想着去爬那种正规网站 乱七八糟的加密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
复制代码

作者: 523066680    时间: 2023-3-3 21:29

回复  jyswjjgdwtdtj


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



    我看到你前面那段的时候就想说,干脆全套python了。拉到下面果然不用说




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2