【问题标题】:email address is not being parsed in beautifulsoupBeautifulsoup 中未解析电子邮件地址
【发布时间】:2019-04-03 06:30:45
【问题描述】:

我正在使用python3.5 中的beautifulsouprequests 抓取网页。问题是当我试图解析p 中的电子邮件地址时,它给了我[email protected]。我尝试了其他链接,但没有任何收获。 cf_email 标记甚至不存在。我正在解析这个

email_addresses=[]
for email_address in detail.findAll('p'):
   email_addresses.append(email_address.text)
   information = {}
   information['email'] = email_addresses

电子邮件位于<p> 标签中。

我在检查元素中有这个 html。

<div class="email">
   <p>test1@hotmail.com</p>
   <p>test2@yahoo.com</p>
   <p>test3@yahoo.com</p>
<div>

当我打开页面源时,我注意到了这一点。

<p><a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="472323222b2630262b2b26072f28332a262e2b6924282a">[email&#160;protected]</a></p>

【问题讨论】:

  • 你能发布一个示例 html 吗?
  • 您说您正在解析div 中的电子邮件地址,但您的代码中却通过了ps? detail 有可能是一个 div 吗?请添加更多详细信息,就像@Rakesh 所说,您可以添加示例 html 吗?
  • 我已经编辑了我的答案。
  • 所见即所得。在 html - 文本'电子邮件保护',并在你的结果'电子邮件保护'。
  • @crazyzubr 抱歉没听懂你在说什么

标签: django beautifulsoup python-3.5


【解决方案1】:

该页面实际上并不包含电子邮件地址。这样做可能是为了防止垃圾邮件发送者;会有一些 javascript 用实际值替换持有的文本。

换句话说,该网站试图阻止人们做你想做的事。

【讨论】:

  • 它实际上包含我在问题中提到的 html 在检查和查看页面源代码时存在差异。
  • 是的,这正是我所说的。页面源不包含电子邮件。它是通过 Javascript 动态添加到 DOM 中的。
  • @fatpotato 是的,因为当您使用检查元素时,用电子邮件替换令牌的 js 已经运行。但是,当您使用 beautifulsoup 进行解析时,js 不会运行,因此您必须寻找另一种方式 - 或者可能根本不这样做,因为该网站似乎不希望您这样做。
猜你喜欢
  • 2011-01-07
  • 2011-11-27
  • 1970-01-01
  • 2011-05-14
  • 1970-01-01
  • 2013-09-01
  • 2011-12-08
  • 2019-09-10
  • 2010-10-07
相关资源
最近更新 更多