• 按键公众号 :
按键精灵电脑版
立即下载

软件版本:2014.06
软件大小:22.9M
更新时间:2021-12-03

按键精灵安卓版
立即下载

软件版本:3.7.2
软件大小:46.2M
更新时间:2023-05-10

按键精灵iOS版
立即下载

软件版本:1.8.0
软件大小:29.2M
更新时间:2023-03-21

按键手机助手
立即下载

软件版本:3.8.0
软件大小:262M
更新时间:2023-05-30

快捷导航

登录 后使用快捷导航
没有帐号? 注册

返回列表 12345678» / 42
发新话题 回复该主题

[技术交流] 【院刊】-【201409期】抓取网页指定内容(资料),获取网页里的图... [复制链接]

1#

抓取网页指定内容(资料),获取网页里的图片


最近有遇到同学反馈,网页里的那些没有特征值的文本元素不知道怎么获取。以及,不知道怎么获取保存网页里出现的图片。

获取网页指定文字:


目前按键支持的元素特征值有这些: frame(框架) 、id(唯一标识) 、tag(标签) 、type(类型)、txt(文本) 、value(特征) 、index(索引) 、name(名字) 拥有这些特征值的元素才能直接使用HtmlGet命令来获取元素文本信息。





命令名称: HtmlGet 获取网页元素的信息
命令功能: 获取网页元素指定属性的信息
命令参数: 参数1:字符串型,网页元素属性类型:texthtml outerHtmlvalue src href offset
参数2:字符串型,网页元素特征字符串


例如下面的例子,按键精灵论坛搜索框,它有type、name、id这三个特征值。


您所在的用户组无法下载或查看附件



我们取它id特征值带入到HtmlGet 命令来查看下结果:
  1. Call Plugin.Web.Bind("WQM.exe")
  2. Call Plugin.Web.go("http://bbs.anjian.com/forum-250-1.html") //要提取信息的网站
  3. Txt=Plugin.Web.HtmlGet("value","id:scbar_txt")
  4. 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个字符,但是长度一定要把“果果。。” 给截进来,因为后面我们要通过“果果。。”作为基准,去过滤掉不要的文字。



您所在的用户组无法下载或查看附件




5. 在cc变量里,找果果。。出现的位置,找到之后,截取“果果。。”之前的文本,也就是我们需要接取的地方。

6. 最后,设置叠加的变量x,把每次找到的"]" 这个符号的位置放到变量x里进行累加,累加之后第二次循环,就会跳过之前找过的内容,进行新的内容的寻找。



源码:

  1. Call Plugin.Web.Bind("WQM.exe")
  2. Call Plugin.Web.go("http://bbs.anjian.com/forum-250-1.html") //要提取信息的网站
  3. Delay 1000 // 如果网页打开速度慢,可适当添加延迟
  4. Txt =Plugin.Web.HtmlGet("text","") //获取网页的文本
  5. x=1
  6. Do
  7. aa = "]" //过滤]符号前面的文本
  8. bb = InStr(x, Txt, aa) // 返回aa变量里的"["这个字符 在整个网页文本txt里的位置
  9. cc = Mid(Txt, bb + Len(aa), 100)//从文本里的"]"符号后面的位置开始取字符串,这里取了一百个字符
  10. dd = InStr(1, cc, "果果。。")//找cc字符串里,果果。。出现的位置,果果。。的位置就是我们要接取的字符串的长度
  11. ee = Mid(cc, 1, dd)//从文本里cc里第一个字符开始,取到果果。。文字出现的位置
  12. If Len(ee) <> 0 Then //判断有没有取到匹配的字符
  13. pp = Left(ee, Len(ee)-1) //如果有取到,我们还要做下处理,因为前面ee字符串是取到了果果。。出现的位置,所以果字也被取了,我们这里长度-1,去掉果字
  14. TracePrint pp
  15. x = InStr(x, Txt, pp) //这里做个记号,把每次找到的"]" 这个符号的位置进行累加,累加之后第二次循环,就会跳过之前找过的内容,进行新的内容的寻找。
  16. Else
  17. Exit Do //如果没有找到匹配的 就退出
  18. End If
  19. Loop
复制代码

最终效果:


您所在的用户组无法下载或查看附件



标题后面的?…234这样的字符是帖子总回帖的页数







获取网页图片



我们截图按键精灵官网的图标:


您所在的用户组无法下载或查看附件



您所在的用户组无法下载或查看附件



我们可以查看图片的具体地址


代码如下:
  1. Call Plugin.Web.Bind("WQM.exe")
  2. Call Plugin.Web.Go("http://www.anjian.com") //打开按键官网地址
  3. Call Plugin.Web.Save("http://www.anjian.com/images/logo.gif", "d:\123.gif")
  4. Delay 3000
  5. RunApp "mspaint.exe"&" d:\123.gif" //打开画图工具,看看保存的图片的效果
复制代码
命令名称: Save 保存网页或图片
命令功能:保存指定URL的文件到本地磁盘
命令参数: 参数1:字符串型,需要保存的目标Url 参数2:字符串型,本地文件名


最终效果:


您所在的用户组无法下载或查看附件





大家有没有注意到,这里的按键精灵官网图标,是gif格式的,可以保存。如果是一个链接呢?


例如,腾讯QQ注册页面里的这种验证图片:



您所在的用户组无法下载或查看附件



大家看,它的图片是保存在一个链接里的,这样就无法获取。



您所在的用户组无法下载或查看附件





地址是没有变化的,但是点击进去之后,生成的就是另一张验证图片了。



您所在的用户组无法下载或查看附件




所以,遇到这种链接方式的图片,大家还是使用查找图片的区域坐标,然后用屏幕范围截图命令来截图保存:

  1. //下面这句在屏幕区域范围内截图保存到(内存)里,以备后面调用。
  2. Call Plugin.ColorEx.PrintScreen(0, 0, 1024, 768)

  3. //下面这句在屏幕区域范围内按方式0,查找颜色,返回左上角第一点颜色位置坐标
  4. XY = Plugin.ColorEx.FindColor(0, 0, 1024, 768, "0000FF", 1, 0)
  5. //下面这句用于分割字符串
  6. ZB = InStr(XY, "|")
  7. //下面这句将字符串转换成数值
  8. X = Clng(Left(XY, ZB - 1)): Y = Clng(Right(XY, Len(XY) - ZB))

  9. //释放屏幕截图信息时请使用以下命令
  10. Call Plugin.ColorEx.Free()
复制代码

本文由按键学院提供技术支持


按键学院实战班(入驻最终幻想)火热招生


按键学院基础视频抢先观看





    已有6评分我要评分查看所有评分

    本主题由 超级版主 瑞祥幽冥狼 于 2023/10/5 18:31:13 执行 审核帖子 操作
    2#

    888888888888888888888888

    3#

    看看

    4#


    5#

    看看看看看

    6#

    啊啊啊啊啊啊啊

    7#

    看看有没有获取图片的

    8#

    看看 是什么

    9#

    好哎。

    10#

    这是个好东西啊

    11#

    等不及了

    12#

    学习一下,谢谢分享

    13#

    看一下,谢谢楼主

    14#

    不错 看看

    15#

    狗狗股,咯喔,n

    16#

    好东西啊

    17#

    求指点

    18#

    来学习下

    19#

    253633

    20#


    发新话题 回复该主题