【问题标题】:How to scrape email address out of a string?如何从字符串中提取电子邮件地址?
【发布时间】:2017-11-09 20:50:23
【问题描述】:

我如何从这个 html sn-p 中获取电子邮件地址?

由于在某个网页中有数千条这样的线索,并且其中的文本并不总是像这里看到的那样找到。

唯一常见的是位于第一位的电子邮件地址。

我怎样才能得到电子邮件地址而忽略其余的?

这些是元素:

<div class="gm_popup"><div class="gm_name">Adel Outfitters</div><div class="gm_address">1221 W 4th St</div><div class="gm_location">Adel, Georgia 31620<div style="display:none" class="w3-address-country">United States</div></div><div class="gm_phone"><span class="gm_phone_label">P:</span> 229-896-7105</div><div class="gm_email">adeloutfitters@yahoo.com<div><div class="gm_website"><a href="https://www.facebook.com/pages/adel-outfitters/132735763434461" target="_blank">https://www.facebook.com/pages/Adel-Outfitters/132735763434461</a></div><br><a target="_blank" class="directions-link" href="http://maps.google.com/?saddr=+&amp;daddr=1221+W 4th St, Adel, Georgia, 31620">Directions<span class="w3-arrow">different stuffs</span></a></div></div></div>

我尝试了什么:

Set post = html.getElementsByClassName("gm_email")(0)
MsgBox post.innerText

结果:

adeloutfitters@yahoo.com
https://www.facebook.com/pages/Adel-Outfitters/132735763434461

Directionsdifferent stuffs

预期输出:

adeloutfitters@yahoo.com

【问题讨论】:

    标签: excel vba dom web-scraping


    【解决方案1】:

    结束 &lt;/div&gt; 标记更靠下,这就是为什么你会得到额外的文本。你能在换行后砍掉任何东西吗?或者检查字符串中的每个单词并保存带有“@”的单词?处理它的方式不好,但它可能会工作......

    【讨论】:

    • 在其他语言中有decomposedrop 不必要的标签(如在本例中为a 标签)的选项在某个类或标签中。我是 vba 的新手,所以我不知道这里是否有这样的选项。但是,我想到了您在此处提出的想法,但也无法实施,我的意思是技术。
    • 试试这样的函数: Public Function GetTextBefore(sIn As String, sFind As String) As String Dim lResult As Long lResult = InStr(1, sIn, sFind) GetTextBefore = Left$(sIn, lResult - 1) End Function Set post = GetTextBefore(html.getElementsByClassName("gm_email")(0),vbnewline) 如果这不起作用,请尝试在函数 I' 中使用 chr(10) 或 chr(13) 代替 vbNewLine已经提供了。
    • 这个MsgBox Split(post.innerText, vbNewLine)(0)表达式显然解决了问题。当我想到看到您建议的代码时,我接受它作为答案。谢谢。
    • 好方案,我忘了拆分功能!谢谢。
    • 再想一想 - 如果您可以在 HTML 被解释之前对其进行编辑,您可以将:
      替换为
      并将
      替换为
      。这应该使 html.getElementsByClassName("gm_email")(0) 被解释为只是电子邮件。
    猜你喜欢
    • 2017-10-10
    • 2019-12-26
    • 2013-11-22
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 2011-09-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多