如何在不打开电子邮件应用程序的情况下从锚标签中抓取电子邮件 ID

Posted

技术标签:

【中文标题】如何在不打开电子邮件应用程序的情况下从锚标签中抓取电子邮件 ID【英文标题】:How to scrape email id from anchor tag without opening email application 【发布时间】: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 你可以做任何你喜欢的事情。 【参考方案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 运行。

以上是关于如何在不打开电子邮件应用程序的情况下从锚标签中抓取电子邮件 ID的主要内容,如果未能解决你的问题,请参考以下文章

如何在不影响 Node.JS 应用程序的情况下从后台异步发送大量电子邮件?

如何在不打开的情况下从 CSV 文件中检索数据

如何在不点击的情况下从 Chrome 自定义标签中捕获 URL?

如何在不设置 Content-Disposition 标签的情况下从控制器返回图像?

如何在程序启动后在不打开控制台的情况下从批处理文件运行程序?

如何在不知道个人资料 ID 的情况下从我的应用打开 LinkedIn 应用?