【发布时间】:2019-10-10 02:14:00
【问题描述】:
我一直在努力抓取工作中的 Intranet 站点,时间比我愿意承认的要长。该程序是使用 IE 的 Agile(一种通用制造工具),因此在导航时地址不会改变。我要选择的选项卡/按钮/菜单位于 tab_wrapper 内,我无法使用我的技能。
我能深入挖掘的是......
idoc.getElementById("rightPaneContent").getElementsByTagName("Form")(0)
...但它没有显示 DIV、LI 或 A 的完整结果。
我试图选择的菜单下拉实际上是多余的,但是菜单栏使用 HREF javascript 没有类或 ID,我也尝试执行但没有任何运气,所以我将注意力转向带有 ID 的下拉菜单.
Private Sub btnSearch_Click()
Dim page, srch As String
srch = Me.txtSearch
page = "http://xxagile.xxxxxx.com/Agile/" & _
"PLMServlet?module=LoginHandler&opcode=forwardToMainMenu#"
Dim ie As InternetExplorer: Set ie = New InternetExplorerMedium
With ie
.Visible = True
.Navigate page
End With
Do Until ie.ReadyState = 4: DoEvents: Loop
Dim iDoc As HTMLDocument: Set iDoc = ie.Document
With iDoc
.getElementById("toggle_search_menu").Click ' select menu
.getElementById("cls_901").Click ' select ITEM from menu
.getElementById("quicksearch_string").Value = srch ' enter string
.getElementById("top_simpleSearch").Click ' click search button
End With
Do Until ie.ReadyState = 4: DoEvents: Loop
'iDoc.getElementById("rightMenuImg").Click ' error 91
'iDoc.getElementById("rightScrollMenu").Click ' error 91
With ie
'.Stop
'.Quit
End With
Set ie = Nothing: Set iDoc = Nothing
End Sub
outerHTML 大约有 1600 多行,所以我将其缩短为这个...
<div id="rightpanecontent">
<form name="MainForm" method="POST" action="PCMServlet" enctype="application/x-www-form-urlencoded" onsubmit="return false;" target="_self">
<!--************************************
TAB VIEW
*************************************-->
<div id="tabsview_wrapper">
<div id="tabsandcontrols"> <!-- wrapper for tabs, dms, and tab actions -->
<!--************************************
TABS
*************************************-->
<div id="leftScroll" style="display: none; left: 129px; top: 174px;">
<div id="rightScroll" style="display: none; left: 528px; top: 174px;">
<img id="rightScrollImg" src="/Agile/static/6dbe07cad9d304865dea9dfd18d4cb59/images/icn_action_tabscroll_right_enabled.png" onmousedown="scrollButtonPressed(event, 'right')" onmouseup="hideShowScrollButtons()" oncontextmenu="return false" style="cursor: pointer;">
</div>
<div id="rightScrollMenu" style="display: block; left: 891px; top: 142px;">
<img id="rightMenuImg" src="/Agile/static/8913d52dc8a2aeaaa1ea83e36663943d/images/icn_action_tabmenu.png" onclick="showTabsMenu(this, '21', event)" ondblclick="showTabsMenu(this, '21', event)" style="cursor: pointer;">
</div>
我尝试了一系列编码变体。开火、点击、嵌套、聚焦等,我就完蛋了。
灵活的屏幕截图
【问题讨论】:
标签: vba ms-access web-scraping