gpt4 book ai didi

python - 抓取 protected 电子邮件

转载 作者:太空宇宙 更新时间:2023-11-03 13:37:50 25 4
gpt4 key购买 nike

我需要从网站上抓取电子邮件。它在浏览器中可见,但当我尝试使用 requests\BeautifulSoup 抓取它时,我得到了这个:“[email protected]”

我可以用 Selenium 做到这一点,但需要更多时间,我想知道是否可以使用 requests\BeautifulSoup 抓取这些电子邮件?也许需要使用一些库来处理 js。

电子邮件标签:

<span id="signature_email"><a class="__cf_email__" href="/cdn-cgi/l/email-protection" data-cfemail="30425f5e70584346515c5c531e535f5d">[email&#160;protected]</a><script data-cfhash='f9e31' type="text/javascript">/* <![CDATA[ */!function(t,e,r,n,c,a,p){try{t=document.currentScript||function(){for(t=document.getElementsByTagName('script'),e=t.length;e--;)if(t[e].getAttribute('data-cfhash'))return t[e]}();if(t&&(c=t.previousSibling)){p=t.parentNode;if(a=c.getAttribute('data-cfemail')){for(e='',r='0x'+a.substr(0,2)|0,n=2;a.length-n;n+=2)e+='%'+('0'+('0x'+a.substr(n,2)^r).toString(16)).slice(-2);p.replaceChild(document.createTextNode(decodeURIComponent(e)),c)}p.removeChild(t)}}catch(u){}}()/* ]]> */</script></span></span> <span class="separator">|</span>

最佳答案

根据您提供的 html 中的 CF 标记,我假设您正在抓取一个 cloudflare 站点。他们提供了一项功能来混淆列出的电子邮件 (see here),该功能加密 HTML 中的地址并使用 JavaScript 解密它们。因此,使用 selenium 你会看到电子邮件地址,但使用 requests 你不会。

由于可以很容易地从 JavaScript 中获取解密方法,因此您可以使用 Python 编写自己的解密方法。

在 JavaScript 中,

(function () {
try {
var s, a, i, j, r, c, l = document.getElementById("__cf_email__");
a = l.className;
if (a) {
s = '';
r = parseInt(a.substr(0, 2), 16);
for (j = 2; a.length - j; j += 2) {
c = parseInt(a.substr(j, 2), 16) ^ r;
s += String.fromCharCode(c);
}
s = document.createTextNode(s);
l.parentNode.replaceChild(s, l);
}
} catch (e) {}
})();

在 Python 中,

def decodeEmail(e):
de = ""
k = int(e[:2], 16)

for i in range(2, len(e)-1, 2):
de += chr(int(e[i:i+2], 16)^k)

return de

关于python - 抓取 protected 电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36911296/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com