网站内容抓取工具(网页里的那些没有特征值的文本元素不知道怎么获取)

优采云 发布时间: 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()

  

  关键词:实际网页

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线