亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

提取電子郵件 HTML 元素

提取電子郵件 HTML 元素

慕容3067478 2023-10-24 15:09:28
我首先使用這些行Dim post As ObjectSet post = html.querySelectorAll(".mod-Treffer")For i = 0 To post.Length - 1Debug.Print post.Item(i).getElementsByTagName("h2")(0).innerTextDebug.Print post.Item(i).getElementsByTagName("Address")(0).getElementsByTagName("p")(1).innerText'I am stuck with extracting the email'HERENext i此外,有時帖子對象沒有電子郵件信息,因此我僅在找到時才需要提取。這就是到目前為止的代碼    Const sURL As String = "https://www.gelbeseiten.de/Suche/Ambulante%20Pflegedienste/Bundesweit"Dim http As MSXML2.XMLHTTP60, html As HTMLDocumentSet http = New MSXML2.XMLHTTP60Set html = New MSHTML.HTMLDocumentWith http    .Open "Get", sURL, False    .send    html.body.innerHTML = .responseTextEnd WithDim post As ObjectSet post = html.querySelectorAll(".mod-Treffer")Dim i As Long, r As LongRange("A1").Resize(1, 3).Value = Array("Title", "Phone", "Email")r = 2For i = 0 To post.Length - 1Cells(r, 1).Value = post.Item(i).getElementsByTagName("h2")(0).innerTextCells(r, 2).Value = post.Item(i).getElementsByTagName("Address")(0).getElementsByTagName("p")(1).innerTextNext i這是電子郵件部分的快照
查看完整描述

3 回答

?
隔江千里

TA貢獻1906條經驗 獲得超10個贊

原問題:


在這種情況下,我將使用帶有 contains 運算符的 attribute = value 選擇器來href通過 string 定位屬性mailto。添加 CSS 選擇器:[href*=mailto]


如果使用,querySelectorAll("[href*=mailto]")您可以測試該.Length屬性是否大于 0 或使用querySelector并測試if Not querySelector("[href*=mailto]") Is Nothing。


如果你設置一個變量


Dim ele As Object


Set ele = html.document.querySelector("[href*=mailto]")

If Not ele Is Nothing Then

    Debug.Print ele.href  'do something with the href to parse out email

End If

更新的問題:


對于更新的問題,我會將 nodeList 中的當前節點轉移outerHTML到代理HTMLDocument變量中,以便我可以querySelector再次利用方法。我會按類別定位電子郵件。


Option Explicit


Public Sub GetListingInfo()


    Const URL As String = "https://www.gelbeseiten.de/Suche/Ambulante%20Pflegedienste/Bundesweit"

    Dim http As MSXML2.XMLHTTP60, html As MSHTML.HTMLDocument


    Set http = New MSXML2.XMLHTTP60

    Set html = New MSHTML.HTMLDocument


    With http

        .Open "Get", URL, False

        .send

        html.body.innerHTML = .responseText

    End With


    Dim post As Object, html2 As MSHTML.HTMLDocument


    Set post = html.querySelectorAll(".mod-Treffer")

    Set html2 = New MSHTML.HTMLDocument


    Dim i As Long, emailNode As Object


    With ActiveSheet


        .Range("A1").Resize(1, 3).Value = Array("Title", "Phone", "Email")


        For i = 0 To post.Length - 1


            html2.body.innerHTML = post.Item(i).outerHTML


            .Cells(i + 2, 1).Value = html2.querySelector("h2").innerText

            .Cells(i + 2, 2).Value = html2.querySelector(".mod-AdresseKompakt__phoneNumber").innerText


            Set emailNode = html2.querySelector(".contains-icon-email")


            If Not emailNode Is Nothing Then .Cells(i + 2, 3).Value = Replace$(emailNode.href, "mailto:", vbNullString)

        Next i

    End With

End Sub


查看完整回答
反對 回復 2023-10-24
?
德瑪西亞99

TA貢獻1770條經驗 獲得超3個贊

<article class="mod mod-Treffer" data-teilnehmerid="122085958708">

            

            <div data-wipe="{&quot;listener&quot;: &quot;click&quot;, &quot;name&quot;: &quot;Trefferliste Eintrag zur Detailseite&quot;, &quot;id&quot;: &quot;122085958708&quot;, &quot;synchron&quot;: true}" data-realid="2aeca1d2-2bc5-4070-ac4d-e16b10badca5" data-tnid="122085958708" target="_self">

                

        <div class="mod-hervorhebung">

    <p class="mod-hervorhebung--partnerHervorhebung" data-hervorhebungsstufe="3">Silber Partner</p>


    


    

</div>

        

            <picture class="trefferlisten_logo">

        <source media="(min-width: 768px)" srcset="https://ies.v4all.de/0122/GS/0122/5/8335/49428335_310x190.png">

        

        <img alt="" data-lazy-src="https://ies.v4all.de/0122/GS/0122/5/8335/49428335_310x190.png" src="https://ies.v4all.de/0122/GS/0122/5/8335/49428335_310x190.png">

    </picture>

        

        <h2 data-wipe-name="Titel">A &amp; S Billing Pflege-Service GmbH</h2>

        <p class="d-inline-block mod-Treffer--besteBranche">Ambulante Pflegedienste</p>

        

            

            <div class="mod mod-Stars mod-Stars--" title="2.9/5" data-float="2,9">


        <span class="mod-Stars__text" style="width: 58.000001907348632812500%;">2.9</span>


    </div>

            <span>2.9</span>

            <span>(8)</span>

        

    

        

        <address class="mod mod-AdresseKompakt">

        <p data-wipe-name="Adresse">

            Kirchenberg&nbsp;2?4, 

            <span class="nobr">

                90482

                Nürnberg

            </span>

            (M?geldorf)

            

        </p>


        <p class="mod-AdresseKompakt__phoneNumber" data-hochgestellt-position="end" data-wipe-name="Kontaktdaten">(0911) 60 00 99 77</p>


    </address>

        

    

            </div>

            

                <div class="aktionsleiste_kompakt">

        

    <div class="mod-gsSlider mod-gsSlider--noneOnWhite">

        <span class="mod-gsSlider__arrow mod-gsSlider__arrow--arrow" data-direction="left" data-show="false" data-wipe="{&quot;listener&quot;:&quot;click&quot;,&quot;name&quot;:&quot;Trefferliste: Aktionleiste-button-links&quot;}"></span>

        <span class="mod-gsSlider__arrow mod-gsSlider__arrow--arrow" data-direction="right" data-show="false" data-wipe="{&quot;listener&quot;:&quot;click&quot;,&quot;name&quot;:&quot;Trefferliste: Aktionleiste-button-rechts&quot;}"></span>

        <div class="mod-gsSlider__slider" data-initialized="true">

            

            

            

            

            

            

                

        

            <a class="contains-icon-homepage gs-btn" target="_blank" rel=" noopener" href="http://www.as-billing.de" data-wipe="{&quot;listener&quot;:&quot;click&quot;, &quot;name&quot;:&quot;Trefferliste Webseite-Button&quot;, &quot;id&quot;:&quot;122085958708&quot;}" data-isneededpromise="false">Webseite</a>

            

        


        

    

            

                

        

            <a class="contains-icon-email gs-btn" href="mailto:[email protected]?subject=Anfrage%20%C3%BCber%20Gelbe%20Seiten" data-wipe="{&quot;listener&quot;:&quot;click&quot;, &quot;name&quot;:&quot;Trefferliste Email-Button&quot;, &quot;id&quot;:&quot;122085958708&quot;}" data-isneededpromise="false">E-Mail</a>

            

        


        

    

            

                

        

            

            <span class="contains-icon-route_finden gs-btn" data-wipe="{&quot;listener&quot;:&quot;click&quot;, &quot;name&quot;:&quot;Trefferliste Navigation-Button&quot;, &quot;id&quot;:&quot;122085958708&quot;}" data-parameters="{&quot;partner&quot;: &quot;googlemaps&quot;, &quot;searchquery&quot;: &quot;A%20%26%20S%20Billing%20Pflege-Service%20GmbH%20Kirchenberg%202-4%2090482%20N%C3%BCrnberg&quot;}" data-target="_blank">Route</span>

        


        

    

            

                

        

            

            <span class="contains-icon-details gs-btn" data-wipe="{&quot;listener&quot;:&quot;click&quot;, &quot;name&quot;:&quot;Trefferliste Actionbutton Mehr Details&quot;, &quot;id&quot;:&quot;122085958708&quot;}" data-parameters="{&quot;partner&quot;: &quot;gs&quot;, &quot;realId&quot;: &quot;2aeca1d2-2bc5-4070-ac4d-e16b10badca5&quot;, &quot;tnId&quot;: &quot;122085958708&quot;}">Mehr Details</span>

        


        

    

            

            

        </div>

    </div>


    </div>

            

            

            

            

        </article>


查看完整回答
反對 回復 2023-10-24
?
莫回無

TA貢獻1865條經驗 獲得超7個贊

我可以用這些線來弄清楚


    If InStr(post.Item(i).getElementsByTagName("a")(1).href, "mailto:") Then

    Debug.Print Split(Split(post.Item(i).getElementsByTagName("a")(1).href, "mailto:")(1), "?")(0)

End If

但我歡迎任何其他改進和了解更多的建議。* 經過測試,如果在元素中找不到電子郵件,我會遇到錯誤。如何避免錯誤呢?我可以用On Error Resume Next。但我希望處理該錯誤而不是跳過它。


** 編輯:我可以使用這個結構解決第二點


    Dim emailObj As Object


Set emailObj = post.Item(i).getElementsByTagName("a")(1)

If Not emailObj Is Nothing Then

 If InStr(post.Item(i).getElementsByTagName("a")(1).href, "mailto:") Then

    Debug.Print Split(Split(post.Item(i).getElementsByTagName("a")(1).href, "mailto:")(1), "?")(0)

End If

該代碼可以工作,但有時電子郵件無法正確抓取..這是因為這一行


Set emailObj = post.Item(i).getElementsByTagName("a")(1)

有時該對象未分配給 1。所以我的最后一個問題:無論分配的數字如何,如何獲取電子郵件數據?


在循環中,我嘗試了這條線并沒有用


Set aNodeList = post.Item(i).querySelectorAll(".contains-icon-email")(0)


查看完整回答
反對 回復 2023-10-24
  • 3 回答
  • 0 關注
  • 387 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號