B站舞蹈区卖肉精选制作游戏辅助教材推荐:抓取网页指定内容(资料),获取网页里的图片
来源:按键学院 【按键精灵】
最近有遇到同学反馈,网页里的那些没有特征值的文本元素不知道怎么获取。以及,不知道怎么获取保存网页里出现的图片。
获取网页指定文字:
目前按键支持的元素特征值有这些: frame(框架) 、id(唯一标识) 、tag(标签) 、type(类型)、txt(文本) 、value(特征) 、index(索引) 、name(名字) 拥有这些特征值的元素才能直接使用HtmlGet命令来获取元素文本信息。
命令名称: | HtmlGet 获取网页元素的信息 |
命令功能: | 获取网页元素指定属性的信息 |
命令参数: | 参数1:字符串型,网页元素属性类型:text、html、 outerHtml、value、 src、 href、 offset 参数2:字符串型,网页元素特征字符串 |
例如下面的例子,按键精灵论坛搜索框,它有type、name、id这三个特征值。
我们取它id特征值带入到HtmlGet 命令来查看下结果:
Call Plugin.Web.Bind("")
博达易贷Call ("bbs.anjian/forum-250-1.html") //要提取信息的网站
Txt=Plugin.Web.HtmlGet("value","id:scbar_txt")
TracePrint Txt
克柔龙成功获取到了搜索框的value值。
我们现在想要取下面红区域块的帖子标题,想要把一个页面中的这些帖子名称都取出来。该怎么办?
这些文字,都没有特征值的。我们不能使用特征值的方式去他们。
我们可以这样—— 获取到整个网页的文本之后,去我们要取的标题,前后不变的字
符。
大家会发现,这个页面中,帖子标题前后不便的字符是:“]“ 和 “果果。。“ 那我们就将”]“字符前面的文本都过滤掉,“果果。。“后面的文本也过率掉,这样就能得到我们所需要的文本。
首先,我们需要复习下几个函数:
InStr函数 | 描述 |
start | 可选的。规定每次搜索的起始位置。默认是搜索起始位置是第一个字符。如果已规定 compare 参数,则必须有此参数。 |
string1 | 必需的。需要被搜索的字符串。 |
string2 | 必需的。需搜索的字符串。 |
compare | 必需的。规定要使用的字符串比较类型。默认是 0 。可采用下列值: 0= vbBinaryCompare - 执行二进制比较。 1 = vbTextCompare - 执行文本比较。 |
Mid函数 | 描述 |
string | 必需的。从其中返回字符的字符串表达式。如果字符串包含 Null,则返回 Null。 |
start | 必需的。规定起始位置。如果设置为大于字符串中的字符数目,则返回空字符串("")。 |
疙瘩汤length | 可选的。要返回的字符数目。如果省略或 length 超过文本的字符数,将返回字符串中从 start 到字符串结 束的所有字符。 |
Len函数 | 描述 |
string | 任意有效的字符串表达式。如果 string 参数包含Null,则返回 Null。 |
varname | 任意有效的变量名。如果 varname参数包含 Null,则返回 Null。 |
脚本过程:
转户口流程1. 先打开一个要提取信息的网站。
2. 用 HtmlGet 命令 获取整个网页的文本信息,存到Txt变量里面
3. 过滤]符号前面的文本
4. 从文本里的"]"符号后面的位置开始取字符串,这里取了一百个字符放到命名为cc的变量里。如下图,也可以设置取80个字符,60个字符,但是长度一定要把“果果。。” 给截进来,因为后面我们要通过“果果。。”作为基准,去过滤掉不要的文字。
2014-9-12 19:22 上传
下载附件(65.96 KB)
5. 在cc变量里,果果。。出现的位置,到之后,截取“果果。。”之前的文本,也就是我们需要接取的地方。
6. 最后,设置叠加的变量x,把每次到的"]" 这个符号的位置放到变量x里进行累加,累加之后第二次循环,就会跳过之前过的内容,进行新的内容的寻。
源码:
Call Plugin.Web.Bind("")
Call ("bbs.anjian/forum-250-1.html") //要提取信息的网站
Delay 1000 // 如果网页打开速度慢,可适当添加延迟
Txt =Plugin.Web.HtmlGet("text","") //获取网页的文本
x=1
Do
aa = "]" //过滤]符号前面的文本
bb = InStr(x, Txt, aa) // 返回aa变量里的"["这个字符 在整个网页文本txt里的位置
cc = Mid(Txt, bb + Len(aa), 100)//从文本里的"]"符号后面的位置开始取字符串,这里取了一百个字符
dd = InStr(1, cc, "果果。。")//cc字符串里,果果。。出现的位置,果果。。的位置就
是我们要接取的字符串的长度
ee = Mid(cc, 1, dd)//从文本里cc里第一个字符开始,取到果果。。文字出现的位置
If Len(ee) <> 0 Then //判断有没有取到匹配的字符
pp = Left(ee, Len(ee)-1) //如果有取到,我们还要做下处理,因为前面ee字符串是取到了果果。。出现的位置,所以果字也被取了,我们这里长度-1,去掉果字
TracePrint pp
x = InStr(x, Txt, pp) //这里做个记号,把每次到的"]" 这个符号的位置进行累加,累加之后第二次循环,就会跳过之前过的内容,进行新的内容的寻。
Else
Exit Do //如果没有到匹配的 就退出
End If
Loop
最终效果:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论