标题: [原创] 关于如何用vbs爬网站 [打印本页]
作者: jyswjjgdwtdtj 时间: 2023-2-20 18:58 标题: 关于如何用vbs爬网站
一般来说只要你不去爬什么正版小说,正版漫画网站,犯不着也用不着header
那么我就让大家在一分钟内学会如何用vbs爬取网站
1:获取网页、图片
如果你的对象是一个图片(或者是其他非文本文件),那么请把“responsetext”改成“responsebody”,再用adodb.stream写入图片文件- function gethtml(byval url)
- with createobject("msxml2.xmlhttp")
- .open "GET",url,false
- .send
- gethtml=.responsetext
- end with
- end function
复制代码
2:处理html
如果你只是想要获取某个img的url,我建议你直接操作字符串,即利用instr(startplace,string,string)
如果你想批量,或者获取某个div里的文字,而那些文字有大有小(混了一大堆标签),那么我建议你用htmlfile- with createobject("htmlfile")
- .designmode="on" '在这里非常重要,htmlfile似乎是ie5或6的com版,所以不支持许多新的东西,而且网页上通常不会写完整的url,所以没有这一步会疯狂报错
- .write gethtml("https://www.baidu.com")
- set baiduid=.getelementbyid("id")
- 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传来传去会把你搞崩溃的
还是这种把图片挂到图床上的好- Set http = CreateObject("Msxml2.XMLHTTP")
- set fso=createobject("scripting.filesystemobject")
- Set document = CreateObject("htmlfile")
- Set ado = createobject("Adodb.Stream")
- set wshell=createobject("wscript.shell")
- document.designmode="on"
- document.write gethtml("https://www.mhua5.com/comic-wangyouzhijinzhanfashi.html","text")
- function gethtml(byval url,byval t_b)
- with http
- .open "GET",url,false
- .send
- if t_b="text" then
- gethtml=.responsetext
- elseif t_b="binary" then
- gethtml=.responsebody
- end if
- end with
- end function
-
- sub writeb(target,htmlbody)
- ado.Type = 1
- ado.Open
- ado.Write htmlbody
- ado.SaveToFile target
- ado.Close
- End Sub
-
- title=replace(document.title," ","")
- fso.createfolder title
- set j_chapter=document.getelementsbytagname("A")
- for each j in j_chapter
- if j.classname="j-chapter-link" then
- nowfolder=replace(title&"\"&j.innertext," ","")
- fso.createfolder nowfolder
- set document1=createobject("htmlfile")
- document1.designmode="on"
- document1.write gethtml(replace(j.href,"about:","https://www.mhua5.com"),"text")
- z=0
- for each i in document1.getelementsbytagname("IMG")
- if i.classname="lazy-read" then
- z=z+1
- writeb nowfolder&"\"&z&".jpeg",gethtml(replace(i.getattribute("data-original"),"http://","https://"),"binary")'这里的replace是因为源代码里httphttps写错了(可能是为了坑别人?)
- end if
- next
- end if
- next
复制代码
作者: 523066680 时间: 2023-3-3 21:29
回复 jyswjjgdwtdtj
我的意思是直接换python(大雾
也不一定吧,我加的一个vbs群有人天天用dwx ...
老刘1号 发表于 2023-2-21 22:04
我看到你前面那段的时候就想说,干脆全套python了。拉到下面果然不用说
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |