【问题标题】:How to scrape email id from anchor tag without opening email application如何在不打开电子邮件应用程序的情况下从锚标签中抓取电子邮件 ID
【发布时间】:2021-12-15 06:52:14
【问题描述】:

我正在尝试使用 HAP、CefSharp 和 C# 开发基于 Windows 的网络爬虫。我对处理 DOM 和 HTML 没有深入的了解。

通过任何方式,是否可以在以下链接不打开电子邮件客户端或新标签

<a class="classAuthorEmail" href="mailto:" aria-label="Mail Option">email</a>

提前谢谢...

【问题讨论】:

  • 嗨,我不太清楚你想要什么。这个复制是用Javascript来完成的吗? “电子邮件 ID”是什么意思 - 它是 href 的值还是...?
  • 什么“电子邮件ID”?
  • 对不起我的英语...锚标签没有电子邮件ID,但它只显示“mailto:”选项。但是当点击它打开邮件应用程序。我需要抓取 href 值,这是一个 emailid。这是示例链接hindawi.com/journals/aag/2021/1198341
  • 默认情况下在 CefSharp mailto 链接不做任何事情,你可以拦截链接点击查看github.com/cefsharp/CefSharp/wiki/… 例如。你不必调用 Process.Start 你可以做任何你喜欢的事情。

标签: javascript c# html cefsharp


【解决方案1】:

要使用 DOM,您需要 querySelectorAll。

var els = document.querySelectorAll("[href^='mailto'");

例如,对于链接,

<p><a href="mailto:someone@example.com">Send email</a></p>

你会得到:mailto:someone@example.com

要与 JavaScript 保持一致,您可以使用以下内容:

var mails = [];
for (var i = 0, l = els.length; i < l; i++) {
  var el = els[i];
  mails.push(el.href.replace(/mailto:/gi, ''));
}

【讨论】:

  • 但您可以看到 href 处没有电子邮件 ID。它只显示“mailto:”。我认为在调用锚标记的类或执行脚本时需要捕获它。如何做到这一点
  • 我在想这是一个例子。如果没有电子邮件,它可能会通过 JavaScript 调用它,所以你需要你的抓取将允许 JavaScript 运行。
猜你喜欢
  • 2021-05-19
  • 2012-02-04
  • 1970-01-01
  • 2014-10-10
  • 2018-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-10
相关资源
最近更新 更多