分享成果,随喜正能量】人生,既为过客,何须执着,有些事情,注定无法左右,总要学会放下,懂得随缘。你所追求的,也许最后是一场空,不是你不够努力,是一开始,结局已经注定。。
《VBA信息获取与处理》教程是我推出第六套教程,目前已经是第一版修订了。这套教程定位于最高级,是学完初级,中级后的教程。这部教程给大家讲解的内容有:跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互联网数据抓取、VBA延时操作,剪贴板应用、Split函数扩展、工作表信息与其他应用交互,FSO对象的利用、工作表及文件夹信息的获取、图形信息的获取以及定制工作表信息函数等等内容。程序文件通过32位和64位两种OFFICE系统测试。是非常抽象的,更具研究的价值。
教程共两册,八十四讲。今日的内容是专题八“VBA与HTML文档”:查找百度首页的网页元素
大家好,我们开始HTML DOM常见对象的方法的讲解,所谓的方法就是对象自身的动作。HTML DOM 方法就是我们可以在节点(HTML 元素)上执行的动作,比如添加或修改元素。
一些常用的 HTML DOM 方法:
getElementById(id) 获取带有指定 id 的节点(元素)
getElementsByTagName() 返回包含带有指定标签名称的所有元素的节点列表(集合/节点数组)。
getElementsByClassName() 返回包含带有指定类名的所有元素的节点列表。
appendChild(node) 插入新的子节点(元素)
removeChild(node) 删除子节点(元素)
insertBefore() 在指定的子节点前面插入新的子节点。
getAttribute() 返回指定的属性值。
HTML DOM 方法还有很多,我们经常利用的就是上述前三个我用红色标记的方法。
所谓访问HTML 元素(节点)就是上述方法的利用,我们举例说明:
1) getElementById() 方法返回带有指定 ID 的元素:
语法:document.getElementById("id");
如获取 id="intro" 的元素:document.getElementById("intro");
2) getElementsByTagName() 返回带有指定标签名的所有元素。
语法:document.getElementsByTagName("tagname");
如获得所有 <p> 元素的列表:document.getElementsByTagName("p");
3)getElementsByClassName() 查找带有相同类名的所有 HTML 元素。
如获得所有包含 class="intro" 的所有元素的一个列表:document.getElementsByClassName("intro");
注意:getElementsByClassName() 在 Internet Explorer 5,6,7,8 中无效。
有了上面的理论讲解,我们看看在实际的应用中如何查找所需要的网页元素:
1)当我们可以很清晰的观测到,节点的某些属性时,就可以直接定位它。元素节点的主要的定位属性有:id、name和索引号。元素起始标签的语法:<标签 id="xx" name="xx" value=”xx”...>,而索引号,是按源代码书写的顺序,给每类的元素的成员进行编号(类似每类元素,形成一个数组,从0开始编号)。通过元素类别和编号,我们可以很容易的找到它。我们利用的主要工具:
getElementById(“元素的id属性”)或all(“元素的id属性”):返回拥有指定id的元素集合
getElementsByName(“元素的name属性”)或all(“元素的name属性”):返回拥有指定名称的元素的集合
getElementsByTagName(“标签名称”)或all.tags(“标签名称”):返回该类标签的元素集合。
all(索引号):返回指定索引号的元素节点。
2)我们还可以从body元素/节点开始,一级级去寻找,也可以先定位到它的毗邻节点/元素,再通过判断,去查找它的精确位置。从节点方面而言,树形的模型的节点有个特征,除了根节点,每个节点均只有一个父节点(parentNode),有一个或者多个子节点(childNodes,类似一个对象集合或对象数组,从0开始编号)。因此,通过节点的亲属关系,进行判断查找,我们就可以一步步的在父子节点中切换,获取所需的元素。节点有一些属性,可以利于我们的查找判断,如下:
nodeName(节点名称):元素节点的名称为其标签名,属性节点的名称为其属性名称;
nodeValue(节点值):文本节点的值为其包含的文本,属性节点的值为其包含的属性值;
nodeType(节点类型):元素节点为1、属性节点为2、文本节点为3、注释节点为8、文档节点为9。另外,从元素方面而言,要定位元素的父元素可以通过parentElement属性,定位元素的子元素集合可以通过children属性,判断其标签的名称(tagname),他的值(value),内含文本(innertext)等方式来进行查找。最后,定位节点/元素的下一个同级兄弟可以通过nextSibling属性,定位上一个同级兄弟可以用previousSibling属性。
我们去捕捉百度首页,那个提交搜索的表单。这个表单的名称是”f”,然后查询它的innerHtml和OuterHtml。
Sub MYNZA() '捕捉百度首页,提交搜索的表单
【代码见教程】
End Sub
代码截图:
输出结果:
innerHtml:
<input name="ie" type="hidden" value="utf-8"><input name="f" type="hidden" value="8"><input name="rsv_bp" type="hidden" value="1"><input name="rsv_idx" type="hidden" value="1"><input name="ch" type="hidden" value=""><input name="tn" type="hidden" value="baidu"><input name="bar" type="hidden" value=""><span class="bg s_ipt_wr iptfocus quickdelete-wrap"><span class="soutu-btn"></span><input name="wd" class="s_ipt" id="kw" maxlength="255" value="" autocomplete="off"><a title="清空" class="quickdelete" id="quickdelete" style="top: 0px; right: 0px; display: none;" href="javascript:;"></a><span class="soutu-hover-tip" style="display: none;">按图片搜索</span></span><span class="bg s_btn_wr"><input class="bg s_btn" id="su" type="submit" value="百度一下"></span><span class="tools"><span id="mHolder"><div id="mCon"><span>输入法</span></div><ul id="mMenu"><li><a name="ime_hw" href="javascript:;">手写</a></li><li><a name="ime_py" href="javascript:;">拼音</a></li><li class="ln"></li><li><a name="ime_cl" href="javascript:
;">关闭</a></li></ul></span></span><input name="rn" type="hidden" value=""><input name="fenlei" type="hidden" value="256"><input name="oq" type="hidden" value=""><input name="rsv_pq" type="hidden" value="8da8d8ec001a725c"><input name="rsv_t" type="hidden" value="b2b39kZjoN4DHoLoPMw+sMpFZqL/TpIfDe8w9ONePLlGObWa6DFTgMgCmyY"><input name="rqlang" type="hidden" value="cn"><input name="rsv_dl" type="hidden" value="ib"><input name="rsv_enter" type="hidden" value="1">
OuterHtml:
<form name="f" class="fm" id="form" action="/s"><input name="ie" type="hidden" value="utf-8"><input name="f" type="hidden" value="8"><input name="rsv_bp" type="hidden" value="1"><input name="rsv_idx" type="hidden" value="1"><input name="ch" type="hidden" value=""><input name="tn" type="hidden" value="baidu"><input name="bar" type="hidden" value=""><span class="bg s_ipt_wr iptfocus quickdelete-wrap"><span class="soutu-btn"></span><input name="wd" class="s_ipt" id="kw" maxlength="255" value="" autocomplete="off"><a title="清空" class="quickdelete" id="quickdelete" style="top: 0px; right: 0px; display: none;" href="javascript:;"></a><span class="soutu-hover-tip" style="display: none;">按图片搜索</span></span><span class="bg s_btn_wr"><input class="bg s_btn" id="su" type="submit" value="百度一下"></span><span class="tools"><span id="mHolder"><div id="mCon"><span>输入法</span></div><ul id="mMenu"><li><a name="ime_hw" href="javascript:;">手写</a></li><li><a name="ime_py" href="javascript:;">拼音</a></li><li class=
"ln"></li><li><a name="ime_cl" href="javascript:;">关闭</a></li></ul></span></span><input name="rn" type="hidden" value=""><input name="fenlei" type="hidden" value="256"><input name="oq" type="hidden" value=""><input name="rsv_pq" type="hidden" value="8da8d8ec001a725c"><input name="rsv_t" type="hidden" value="b2b39kZjoN4DHoLoPMw+sMpFZqL/TpIfDe8w9ONePLlGObWa6DFTgMgCmyY"><input name="rqlang" type="hidden" value="cn"><input name="rsv_dl" type="hidden" value="ib"><input name="rsv_enter" type="hidden" value="1"></form>
从以上的返回结果,大家也可以看出document 对象的innerHtml和OuterHtml属性的不同。
本节知识点回向:
HTML DOM对象常用的方法有哪些?如何利用
本节参考文件:008工作表.xlsm
我20多年的VBA实践经验,全部浓缩在下面的各个教程中,教程学习顺序:
【分享成果,随喜正能量】做人是一件很麻烦的事,所有说法和实情之间都存在这巨大的空隙,好像一生都在和这个东西挣扎,分辨力越强这空隙越深不见底,最后似乎只好把空虚视为答案和真相。。
代码一般情况下分为两种,一种是程序功能页的源文件或叫源代码,可以修改网页功能及显示效果,往往由技术人员自己掌握。另一种则是由系统编译之后生成的HTML源代码,这些源代码一般是给浏览器看的,通过HTML超文本编辑语言设计网页的色彩、布局、宽高、样式、动态效果等内容。在建设网站的过程中也可以用来调试页面显示异常及问题分析。
一般上网者看到的网页都包含有HTML源代码吗,这些代码告诉浏览器应该以哪种方式展现网页内容,可以理解为机器代码,是开发者与浏览器达成共识的呈现,并非用于普通浏览者识别。那么如果想要查看网页源代码应该如何操作呢?
第一种方法:在当前网页点右键“查看网页源代码”:
第二种方法:如果点右键没有如上菜单,可以直接使用快捷键“ALT+V+C”,也可以在弹出的菜单里找到“查看网页源文件”选项。一般出现在当前网页的右上角。
以上二种方法是常用的查看网页源代码的方法,一般是为了便于分析HTML代码,技术人员专用。普通浏览者看到的则是一堆代码,除了汉字完全就看不明白是什么。
当你获得某个sql的sql_id时,怎么去一键获得这个sql的一些信息呢,例如列的情况、执行计划等等..脚本有点长,建议大家用电脑来看..
下面用一个简单测试来演示下,附脚本领取方式。
SQL> select a.* from (select SQL_ID,SQL_TEXT, EXECUTIONS, DISK_READS, BUFFER_GETS from v$sql order by DISK_READS desc) a where rownum<5;
太长了...所以这里截部分图做演示:
SQL> @/home/oracle/sql/spoolsql.sql "input sqlid:" Enter value for sql_id: 1rhvj2yy0kyfn ./1rhvj2yy0kyfn.html
相关的信息如下:
这个脚本还是很实用的,如果大家想要对某个sql去做优化,可以考虑先用这个脚本收集相关的信息,有个大致了解后做优化会方便也快一点。
这份实用的sql脚本怎么领取呢?
1.请在评论区评论+点赞+转发
2.点击关注,关注本头条号
3.进入头条号主页面,右上角有私信功能,私信小编:spoolsql
同时希望大家多多转发分享给更多的朋友哦!
ps:大家关键词一定要打对...私信太多,可能看不过来,或者大家加我微信18825144300找我拿也行
*请认真填写需求信息,我们会在24小时内与您取得联系。