作者Metal5566 (咩陀56)
看板Office
标题[问题] Internetexplorer.document.innertext
时间Sun Sep 11 14:32:58 2016
(若是和其他不同软体互动之问题 请记得一并填写)
软体:
版本:excel office 2010
有用excel在网路抓取资料的需求,在网路上找的了这段code,但是把所有标签抓下来之後在innertext 储存格内会有script
另外有找到也是别人的档案,code大同小异但他的innertext内就不会有script
网页相关的知识比较薄弱,想请问一下为什麽会这样,要怎麽解决
谢谢
作者:黄晨
链接:
https://www.zhihu.com/question/20460385/answer/71447219
来源:知乎
着作权归作者所有,转载请联系作者获得授权。
Sub getPageInfo()
With CreateObject("internetexplorer.application")
.Visible = True
.Navigate [URL]
While .ReadyState <> 4 Or .Busy
DoEvents
Wend
Set dmt = .Document
For i = 0 To dmt.all.Length - 1
Set htMent = dmt.all(i)
With ActiveSheet
.Cells(i + 2, "A") = htMent.tagName
.Cells(i + 2, "B") = TypeName(htMent)
.Cells(i + 2, "C") = htMent.ID
.Cells(i + 2, "D") = htMent.Name
.Cells(i + 2, "E") = htMent.Value
.Cells(i + 2, "F") = htMent.Text
.Cells(i + 2, "G") = htMent.innerText
End With
Next i
Set r = Nothing
.Quit
End With
MsgBox "获取页面信息成功!"
End Sub
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 123.51.169.144
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Office/M.1473575581.A.359.html
※ Metal5566:转录至看板 Visual_Basic 09/11 14:35
1F:推 waiter337: 一种方式 想办法抓左边第三个数字开始 通常左边两个空 09/11 21:29
2F:→ waiter337: 白 (看不见的) 09/11 21:29
3F:→ waiter337: 如果 你只是要查资料 那原始档应该没必要修改 09/11 21:29
4F:→ waiter337: 到时候用serch 查内部文字 应该就好了 09/11 21:29
5F:→ waiter337: 测试是否有隐藏空白的方式 09/11 21:30
6F:推 waiter337: 贴上纯文字档後,在上方输入列,的第一个字左边,按三 09/11 21:32
7F:→ waiter337: 下左然後打个1,接着按右看几下才跳过去,那中间就是 09/11 21:32
8F:→ waiter337: 藏了几个空白 09/11 21:32
9F:→ waiter337: 或者丢档上来 等晚点在测试 09/11 21:33
10F:推 waiter337: 补充 那个空白 并不等於空白,所以,你也可以直接复制 09/11 21:35
11F:→ waiter337: 整个储存格作参照 09/11 21:35
12F:→ Metal5566: 看了上面的做法不是很懂 09/12 07:30
15F:→ Metal5566: 然後进去赛事的页面 有电视图示的就是SCRIPT所在 09/12 07:37
17F:→ Metal5566: 我有问到是说 innertext 是把其下标签的innertext也算 09/12 07:39
18F:→ Metal5566: 所以TABLE标签或甚麽的里面会有SCRIPT标签的INNERTEXT 09/12 07:40
19F:→ Metal5566: 想知道怎麽避免不要抓到那段SCRIPT 09/12 07:40
soyoso:
谢谢你,算是成功了
想请问为什麽把.document.body.innerHTML
改成 .document.getElementById("tournamenttable").outerHTML
那些script就抓不到了呢
再来为甚麽可以直接用ExecWB 17, 0 和12,0 直接全选复制呢?
最後我的表格抓出来和你的差别是在我要的地方上面还有其他东西,如图
http://imgur.com/a/oBYqx
请问要怎麽处理呢
*目前用的网址(有小电视图标,就是那段讨厌的SCRIPT):
http://www.oddsportal.com/tennis/japan/wta-tokyo/
谢谢你的帮忙!
21F:→ soyoso: 测试上,上面无出现回文连结内所出现的资料 09/12 11:17
23F:→ soyoso: 以execwb的部分复制所见的网页内容(文字、表格、超连结... 09/12 11:31
24F:→ soyoso: ),而非抓取原始码的资料 09/12 11:34
26F:→ Metal5566: ......那行 弄了很久不知道为甚麽会这样 元素不给改吗? 09/12 14:15
27F:→ Metal5566: 也都有引用MS INTERNETCONTROL 和ms html library 09/12 14:37
非常谢谢 SOYOSO 花了这麽多时间帮忙确认 用了两台电脑试(excel2010,2013)试
一样都是错误424:此处需要物件
希望版上前辈能帮忙看看
https://pan.baidu.com/s/1kVi5mgn
只是要确认里面的网址是有上面我说明的那段SCRIPT的网页
谢谢大家 麻烦了
※ 编辑: Metal5566 (59.115.113.160), 09/12/2016 16:21:33
31F:→ Metal5566: 好的 再次感谢 我再找第三台电脑试试 09/12 17:19
32F:推 waiter337: 同楼上,我也卡在424 09/13 02:34
34F:→ waiter337: 研究中= = 09/13 02:45
36F:→ soyoso: 原本测试ie版本为ie8是可行的,到ie11时则会出现错误424 09/13 08:56
38F:→ soyoso: 误,引用项目方面请勾选 09/13 08:59
39F:→ Metal5566: 谢谢你 ok了 没想到是ie的关系 想知道为什麽要这样设 09/13 09:35
40F:→ Metal5566: 变数呢? 09/13 09:35
41F:→ soyoso: 因引用项目,所以将变数指定明确的型态 09/13 10:08
42F:推 waiter337: 已跪 09/13 13:16