ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 25522|回复: 98

[分享] 第二辑、网页:篡改、保留和屏蔽某些内容

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2012-9-10 04:58 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖已被收录到知识树中,索引项:网页交互
本帖最后由 蓝天630902 于 2012-9-11 08:43 编辑

前面讲了“第一辑、网页:点击标签,翻页”:http://club.excelhome.net/thread-874608-1-1.html

现在来讲一讲网页内容的篡改,比如说我们要改变百度的“LOGO“图标,那是一件很简单的事情:

  1. Sub 改变百度LOGO()
  2.     On Error Resume Next
  3.     With CreateObject("InternetExplorer.application")
  4.         .Visible = True
  5.         .Navigate "http://www.baidu.com/"
  6.         Do Until .ReadyState = 4
  7.             DoEvents
  8.         Loop
  9.         With .document.all.tags("img")(0)
  10.             .Width = 384
  11.             .Height = 256
  12.             .src = "http://news.xinhuanet.com/ziliao/2003-01/18/xinsrc_56211020910306331093560.gif"
  13.         End With
  14.     End With
  15. End Sub
复制代码



这里面,是通过改变img(0)标签的宽度(Width )、高度(Height )和地址(src )而实现的。

要说明一点,这种事,只是在本地篡改。所以,你只要刷新一下,就可以恢复原状。




评分

6

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-9-10 04:59 | 显示全部楼层
本帖最后由 蓝天630902 于 2012-9-10 05:26 编辑

我们,还可以改变它的文字内容:


  1. Sub 改变文字内容()
  2.     On Error Resume Next
  3.     With CreateObject("InternetExplorer.application")
  4.         .Visible = True
  5.         .Navigate "http://www.baidu.com/"
  6.         Do Until .ReadyState = 4
  7.             DoEvents
  8.         Loop
  9.         With .document.all.tags("img")(0)
  10.             .Width = 384
  11.             .Height = 256
  12.             .src = "http://news.xinhuanet.com/ziliao/2003-01/18/xinsrc_56211020910306331093560.gif"
  13.         End With
  14.         For i = 0 To .document.all.tags("a").Length
  15.             .document.all.tags("a")(i).innerHTML = i
  16.         Next i
  17.     End With
  18. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-9-10 05:00 | 显示全部楼层
本帖最后由 蓝天630902 于 2012-9-10 05:26 编辑

我们,还可以改变它的文字颜色:

  1. Sub 改变文字颜色()
  2.     On Error Resume Next
  3.     With CreateObject("InternetExplorer.application")
  4.         .Visible = True
  5.         .Navigate "http://www.baidu.com/"
  6.         Do Until .ReadyState = 4
  7.             DoEvents
  8.         Loop
  9.         With .document.all.tags("img")(0)
  10.             .Width = 384
  11.             .Height = 256
  12.             .src = "http://news.xinhuanet.com/ziliao/2003-01/18/xinsrc_56211020910306331093560.gif"
  13.         End With
  14.         For i = 0 To .document.all.tags("a").Length
  15.             .document.all.tags("a")(i).innerHTML = i
  16.         Next i
  17.         For i = 0 To .document.all.tags("a").Length
  18.             .document.all.tags("a")(i).Style.Color = "red"
  19.         Next i
  20.         .document.getElementById("su").Style.Color = "red"
  21.     End With
  22. End Sub
复制代码



TA的精华主题

TA的得分主题

 楼主| 发表于 2012-9-10 05:01 | 显示全部楼层
本帖最后由 蓝天630902 于 2012-9-14 20:59 编辑

甚至,我们可以让它变“空白”:

  1. Sub 空白()
  2.     On Error Resume Next
  3.     With CreateObject("InternetExplorer.application")
  4.         .Visible = True
  5.         .Navigate "http://www.baidu.com/"
  6.         Do Until .ReadyState = 4
  7.             DoEvents
  8.         Loop
  9.         For i = 0 To .document.all.tags("div").Length‘清空所有“div”标签
  10.             .document.all.tags("div")(i).innerHTML = ""
  11.         Next i
  12.     End With
  13. End Sub
复制代码
运行上面的代码后,右上角还有一点没有“清理”干净,现在再接再厉,加一句“.document.all.tags("p")(0).innerHTML = ""”:

  1. Sub 空白()
  2.     On Error Resume Next
  3.     With CreateObject("InternetExplorer.application")
  4.         .Visible = True
  5.         .Navigate "http://www.baidu.com/"
  6.         Do Until .ReadyState = 4
  7.             DoEvents
  8.         Loop
  9.         For i = 0 To .document.all.tags("div").Length
  10.             .document.all.tags("div")(i).innerHTML = ""  ‘清空所有“div”标签
  11.         Next i
  12.         .document.all.tags("p")(0).innerHTML = ""  ‘清空“p(0)”标签
  13.     End With
  14. End Sub
复制代码
应该是很干净了。只剩下“意见反馈”了
  1. Sub 其实更简单()
  2.     On Error Resume Next
  3.     With CreateObject("InternetExplorer.application")
  4.         .Visible = True
  5.         .Navigate "http://www.baidu.com/"
  6.         Do Until .ReadyState = 4
  7.             DoEvents
  8.         Loop
  9.         .document.all.tags("body")(0).innerHTML = ""  '清空“body(0)”标签
  10.     End With
  11. End Sub
复制代码
全没了!

你会说了:“什么也没有,还看屁啊!”
“皮”肯定没啥可看到。不过,别急,接着看下去,你就知道它的妙用。

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-9-10 05:02 | 显示全部楼层
本帖最后由 蓝天630902 于 2012-9-11 07:08 编辑

百度太简单,看看用在网易论坛的效果:
1、把网页上部非发言区的文字颜色变“兰”、发言区文字变红;
2、把右边“屏蔽”;
3、只看某网友的发言,因为网易比较缺德,没有Excel Home的“只看该作者”功能,所以没办法“只看某网友的发言”。不过现在不成问题,因为对Vba来说,那是小事情。
……
还有很多事情可以做。

  1. Sub 稍微改变一下惊雷贴样式()
  2.     On Error Resume Next
  3.     With CreateObject("internetexplorer.application")
  4.         .Visible = True
  5.         .Navigate "http://bbs.news.163.com/bbs/mil/1193698.html"
  6.         Do Until .ReadyState = 4
  7.             DoEvents
  8.         Loop
  9.         For i = 0 To 58
  10.             .document.all.tags("a")(i).Style.Color = "Blue"
  11.         Next i
  12.         With .document.all.tags("img")(0)
  13.             .Width = 0
  14.             .Height = 0
  15.             .src = ""
  16.         End With
  17.         For i = 94 To 106
  18.             With .document.all.tags("img")(i)
  19.                 .Width = 0
  20.                 .Height = 0
  21.                 .src = ""
  22.             End With
  23.         Next i
  24.         For i = 0 To 8
  25.             .document.all.tags("h3")(i).innerHTML = ""
  26.         Next i
  27.         For i = 0 To 8
  28.             .document.all.tags("h3")(i).innerHTML = ""
  29.             .document.all.tags("h3")(i).parentElement.innerHTML = ""
  30.         Next i
  31.         For i = 0 To 60
  32.             .document.all.tags("ul")(i).innerHTML = ""
  33.         Next i
  34.         For i = 0 To .document.all.Length
  35.             dz = .document.all(i).src
  36.             'Cells(i + 1, 1) = dz
  37.             If dz Like "*youdao*" Then
  38.                 .document.all(i).Width = 0
  39.                 .document.all(i).Height = 0
  40.                 .document.all(i).src = ""
  41.             End If
  42.         Next i
  43.         For i = 0 To .document.all.tags("div").Length
  44.             If .document.all.tags("div")(i).className = "tie-content" Then
  45.                 .document.all.tags("div")(i).Style.Color = "red"
  46.             End If
  47.             tt = .document.all.tags("div")(i).all.tags("a")(0).Title
  48.             If tt <> "汉风1918" And tt <> "" And tt <> "返回版面 网上谈兵" Then
  49.                 .document.all.tags("div")(i).innerHTML = ""
  50.                 tt = ""
  51.             End If
  52.         Next i
  53.     End With
  54. End Sub
复制代码
神奇吧?


评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-9-10 05:03 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 蓝天630902 于 2012-9-12 17:42 编辑

耶?

昨天,获得一枚


TA的精华主题

TA的得分主题

发表于 2012-9-10 07:28 | 显示全部楼层
蓝天630902 发表于 2012-9-10 05:03
耶?

昨天,获得一枚“优秀会员奖章”,哈哈,恭喜一下自己。

我也恭喜一下你了O(∩_∩)O哈哈~

TA的精华主题

TA的得分主题

发表于 2012-9-10 07:34 | 显示全部楼层
刚刚学习 vba 看到这些代码着实有点头大,不过相信以后会看明白的 同时恭喜楼主拿奖章 {:soso_e100:}

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-9-11 07:40 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 蓝天630902 于 2012-10-28 16:59 编辑

5楼的只是看一页,如果想看其他页码,有办法吗?
这样的事情,对Vba来说,肯定是小事情:

Sub 惊雷贴只看汉风1918()
    ym = "1"
    On Error Resume Next
    With CreateObject("internetexplorer.application")
        .Visible = True                                                       '网页页面可见
1:
        ym = "," & ym
        .Navigate "http://bbs.news.163.com/bbs/mil/1193698" & ym & ".html"    '打开惊雷贴
        Do Until .ReadyState = 4
            DoEvents                                                          '等待惊雷贴加载完毕
        Loop
        'For i = 0 To 58
        '     .document.all.tags("a")(i).Style.Color = "Blue"                 '把页面顶部区变蓝色,没必要变色,所以注释掉
        ' Next i
        For i = 0 To .document.all.tags("div").Length                              'div标签的长度
            If .document.all.tags("div")(i).className = "tie-author-column" Then   '判断第i个div标签的类名(className)是否为:tie-author-column
                .document.all.tags("div")(i).innerHTML = "<a>汉风1918</a>"         '修改成“汉风1918”,这是修改左侧栏。
            End If
            If .document.all.tags("div")(i).className = "tie-page" Then            '判断第i个div标签的类名(className)是否为:tie-page
                zym = .document.all.tags("div")(i).all.tags("a")(5).href           '取得最后一页地址
            End If
            If .document.all.tags("div")(i).className = "floatLayer" Then          '判断第i个div标签的类名(className)是否为:floatLayer
                .document.all.tags("div")(i).innerHTML = ""                        '屏蔽右下角的“今日聚焦”窗口
            End If
            tt = .document.all.tags("div")(i).all.tags("a")(0).Title               '第i个div标签的第0个a标签的标题(Title)
            If tt <> "汉风1918" And tt <> "" And tt <> "返回版面 网上谈兵" Then    '判断第i个div标签的第0个a标签的标题(Title)是否为:汉风1918
                .document.all.tags("div")(i).innerHTML = ""                        '不是“汉风1918”的发言就屏蔽,这是屏蔽发言区。
                tt = ""
            End If
            If .document.all.tags("div")(i).ID = "tie_addtion" Then    '判断第i个div标签的id号(ID)是否为:tie_addtion
                .document.all.tags("div")(i).innerHTML = ""            '一次性全部屏蔽右侧栏目,懒得一点一点弄。
            End If
        Next i
        zym = Split(Split(zym, ",")(1), ".")(0)                        '计算最大页码
2:
        ym = InputBox("要退出请输入-1,可输入最大页码为" & zym, "请输入页码")
        If ym = -1 Then MsgBox "退出。": GoTo 3
        If ym > zym Then MsgBox "页码太大,请重新输入。": GoTo 2
        GoTo 1
3:
    End With
End Sub

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2012-9-12 09:55 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 蓝天630902 于 2012-9-12 09:56 编辑

Sub 在标签里面写标签名()
    On Error Resume Next
    With CreateObject("internetexplorer.application")
        .Visible = True                                               '网页页面可见
        .Navigate "http://club.excelhome.net/thread-917808-1-1.html"  '打开http://club.excelhome.net/thread-917808-1-1.html
        Do Until .ReadyState = 4
            DoEvents                                           '等待http://club.excelhome.net/thread-918831-1-1.html加载完毕
        Loop
        For i = .document.All.Length To 0 Step -1              '标签的长度
            .document.All(i).ScrollIntoView
            t1 = Timer
            Do Until Timer > t1 + 0.01                                '这里等待0.01秒,是为了看看效果
                DoEvents
            Loop
            .document.All(i).innertext = .document.All(i).tagName   '写入标签名。
        Next i
    End With
End Sub
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-23 18:15 , Processed in 0.050780 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表