2017-07-21 1 views
0

Ich bin auf der Suche nach einer Möglichkeit, Daten aus den verfügbaren Optionen aus einer Dropdown-Box Website zu extrahieren, insbesondere die zweite optgroup "Alle Fondsgesellschaften".Pull-Daten aus HTML Drop-Down

Extrakt von HTML-Code, den ich Schaben

</div><div class="large-5 medium-5 columns spacer-bottom padding-left-none"><div class="select_wrap"><select id="search-company" name="companyid" class="default"> 
<option value="">Search by company</option> 
<optgroup label="Popular companies"> 
    <option value="4">Hargreaves Lansdown</option> 
    <option value="1908">Lindsell Train</option> 
    <option value="55">Jupiter</option> 
    <option value="191">Legal & General</option> 
    </optgroup> 
<optgroup label="All fund companies"> 
    <option value="218">Aberdeen</option> 
    <option value="1080">Aberforth Unit Trust Managers</option> 
    <option value="141">Allianz Global Investors</option> 
    <option value="3472">Alquity Investment Management Limited</option> 
    <option value="1324">Amati Global Investors Ltd</option> 

VBA:

Set htmlObj = html.getElementById("search-company") 

For Each Child In htmlObj.getElementByClassName("optgroup")(1).Children 
    sqlId = Child.Value 
    sqlCompany = Child.innerText 
    Debug.Print (sqlId & " - " & sqlCompany) 
Next 
+0

optgroup ist kein Klassenname; es ist ein Element oder genauer ein untergeordnetes Element des Auswahlelements mit der ID des Suchunternehmens. – Jeeped

Antwort

0

Dank Jeeped ...

Dies ist der Code, um das Problem zu lösen geschaffen ... nicht sicher, ob es der effizienteste Weg ist, es zu tun, aber es funktioniert :)

Set htmlObj = html.getElementById("search-company") 

    For Each Child In htmlObj.Children 
     If Child.Label = "All fund companies" Then Set htmlObj2 = Child 
    Next 

    For Each Child In htmlObj2.Children 
     sqlId = Child.Value 
     sqlCompany = Child.innerText 
     Debug.Print (sqlId & " - " & sqlCompany) 
    Next