【问题标题】:vba scraping nested (?) tab/buttonvba 抓取嵌套(?)选项卡/按钮
【发布时间】: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


    【解决方案1】:

    尤里卡时刻...

        Dim sJS As String
        sJS = "javascript:displayObject" & _
               "('ItemHandler', '10000', '394341431', '12','', '0');"
    
            Call iDoc.parentWindow.execScript(sJS)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多