网站内容抓取工具(网页里的那些没有特征值的文本元素不知道怎么获取)
优采云 发布时间: 2021-10-15 00:12网站内容抓取工具(网页里的那些没有特征值的文本元素不知道怎么获取)
最近遇到同学反馈,网页上没有特征值的文本元素不知道怎么获取。而且,我不知道如何获取和保存网页上出现的图片。
工具/材料按钮向导 2014 方法/步骤
1 获取网页的指定文本:
目前key支持的元素的特征值有:frame、id(唯一标识)、tag(标签)、type、txt(文本)、value(特征)、index(索引)、name(名称)只有元素有了这些特征值可以直接使用HtmlGet命令获取元素文本信息。
命令名称:
HtmlGet 获取网页元素信息
命令功能:
获取有关网页元素的指定属性的信息
命令参数:
参数1:String类型,网页元素属性类型:text、html、outerHtml、value、src、href、offset
参数2:String类型,网页元素的字符串
比如下面这个例子,按钮精灵论坛搜索框,它有三个特征值:type、name、id
2获取网页的指定文本:
目前key支持的元素的特征值有:frame、id(唯一标识)、tag(标签)、type、txt(文本)、value(特征)、index(索引)、name(名称)只有元素有了这些特征值可以直接使用HtmlGet命令获取元素文本信息。
命令名称:
HtmlGet 获取网页元素信息
命令功能:
获取有关网页元素的指定属性的信息
命令参数:
参数1:String类型,网页元素属性类型:text、html、outerHtml、value、src、href、offset
参数2:String类型,网页元素的字符串
比如下面这个例子,按钮精灵论坛搜索框,它有三个特征值:type、name、id
4成功获取到搜索框的值。
我们现在要取出下面红色区域块中的帖子标题,我们想要取出一个页面中的所有帖子名称。我该怎么办?
5这些字符没有特征值。我们不能使用特征值来找到它们。
我们可以这样做——获取整个网页的文本后,去我们想要获取的标题,不变字符。
6 你会发现在这个页面上,帖子标题前后不方便的字符是:“]”和“果果...”然后我们过滤掉“]”字符前的文字,“果果.. .” 文字也是过时的,这样我们就可以得到我们需要的文字了。
7 首先,我们需要回顾以下函数:
InStr 函数
描述
开始
可选的。指定每次搜索的起始位置。默认是搜索开始位置是第一个字符。如果已指定比较参数,则该参数必须存在。
字符串 1
必需的。要搜索的字符串。
字符串2
必需的。要搜索的字符串。
相比
必需的。指定要使用的字符串比较类型。默认为0。可以使用以下值: 0=vbBinaryCompare-执行二进制比较。1=vbTextCompare- 执行文本比较。
中功能
描述
细绳
必需的。从中返回字符的字符串表达式。如果字符串收录 Null,则返回 Null。
开始
必需的。指定起始位置。如果设置为大于字符串中的字符数,则返回空字符串(“”)。
长度
可选的。要返回的字符数。如果省略或长度超过文本中的字符数,则将返回字符串中从开始到字符串结尾的所有字符。
镜头功能
描述
细绳
任何有效的字符串表达式。如果字符串参数收录 Null,则返回 Null。
变量名
任何有效的变量名。如果 varname 参数收录 Null,则返回 Null。
8脚本流程:
1.先打开一个网站提取信息。
2. 使用HtmlGet命令获取整个网页的文本信息并保存在Txt变量中
3.Filter] 符号前的文字
4. 字符串取自文本中“]”符号后面的位置。这里取了 100 个字符并将其放置在名为 cc 的变量中。如下图,也可以设置取80个字符和60个字符,但长度必须是“果果..”才能切入,因为我们会以“果果..”为基准进行过滤删除不需要的文本。.
5. 在cc变量中找到果果。. 找到它出现的位置后,截取“果果...”之前的文字,就是我们需要访问的地方。
6.最后设置叠加变量x,将每次找到的符号“]”的位置放入变量x中进行累加。累加后,第二次循环会跳过之前找到的内容。搜索新内容。
9 源代码:
CallPlugin.Web.Bind("WQM.exe")
CallPlugin.Web.go("")//提取信息网站
Delay1000//如果网页打开很慢,可以适当加一个延迟
Txt=Plugin.Web.HtmlGet("text","")//获取网页的文字
x=1
做
aa="]"//过滤符号前的文字
bb=InStr(x,Txt,aa)//返回整个网页文本txt中aa变量中字符“[”的位置
cc=Mid(Txt,bb+Len(aa),100)//从文本中“]”符号后面的位置取字符串,这里取一百个字符
dd=InStr(1,cc,"果果。.")//在cc字符串中找到果果。. 它出现的地方,果果。. 位置是我们要访问的字符串的长度
ee=Mid(cc,1,dd)//从文本中cc的第一个字符开始,得到水果。. 文本出现的地方
IfLen(ee)0Then//判断是否有匹配字符
pp=Left(ee,Len(ee)-1)//如果取到了,我们还要处理,因为前面的ee字符串是从水果出现的位置取的,所以水果字符is also 已取,我们这里长度为-1,去掉果字
跟踪打印
x=InStr(x,Txt,pp)//这里做个标记,累加每次找到的符号“]”的位置。累加后,第二次循环会跳过之前找到的内容,继续搜索新的内容。
别的
ExitDo//如果没有找到匹配,则退出
万一
环形
10 最终效果:
标题之后?... 234 等字符是帖子的总回复数
11获取网页图片
我们截图按钮精灵官网的图标:
1
1我们可以查看图片的具体地址
代码显示如下:
CallPlugin.Web.Bind("WQM.exe")
CallPlugin.Web.Go("")//打开按钮的官网地址
CallPlugin.Web.Save("","d:\123.gif")
延迟3000
RunApp"mspaint.exe"&"d:\123.gif"//打开绘图工具查看保存图片的效果
命令名称:
Save 保存网页或图片
命令功能:
将指定 URL 的文件保存到本地磁盘
命令参数:
参数1:String类型,需要保存的目标Url 参数2:String类型,本地文件名
最终效果:
1
2有没有注意到这里的按钮精灵官网图标是gif格式的,可以保存。如果是链接呢?
比如腾讯QQ注册页面中的这张验证图:
1
4大家看,它的图片保存在一个链接中,所以无法获取。
1
5 地址不变,但点击进去后,又生成了一张验证图片。
1
6 所以遇到这种链接方式的图片时,还是用搜索图片的区域坐标,然后用屏幕范围截图命令保存截图:
//下面这句话将屏幕区域内的截图保存到(内存)中,以备后用。
CallPlugin.ColorEx.PrintScreen(0,0,1024,768)
//下面这句话在屏幕区域内按照模式0搜索颜色,返回左上角第一个点颜色位置的坐标
XY=Plugin.ColorEx.FindColor(0,0,1024,768,"0000FF",1,0)
//下面这句话是用来分割字符串的
ZB=InStr(XY,"|")
//下面这句话把一个字符串转换成一个值
X=Clng(左(XY,ZB-1)):Y=Clng(右(XY,Len(XY)-ZB))
//发布截图信息时请使用以下命令
CallPlugin.ColorEx.Free()
关键词:实际网页