【问题标题】:Can't get email while parsing解析时收不到邮件
【发布时间】:2016-04-30 02:29:03
【问题描述】:

我是抓取和解析的新手,我不知道如何处理下一个问题。我需要从许多页面中抓取电子邮件。 For example

email所在的代码部分:

<tr><td>Email:</td><td width="10"></td><td><script>var ylhrfq = "&#121;&#112;&#114;";var bdnd = "&#97;&#105;&#108;";var byil = "&#115;&#116;&#46;&#99;";var bwdbdf = "&#97;&#103;&#101;&#64;";var dqiex = "&#46;&#99;";var pner = "&#111;&#109;";var qkfow = "&#103;&#109;";var azzl = "&#105;&#101;";var hgcr = "&#110;&#46;&#112;&#108;";var link = byil + ylhrfq + azzl + hgcr + bwdbdf + qkfow + bdnd + dqiex + pner;var text = link;document.write('<a href="mailto:'+link+'"  />'+text+'</a>');</script></td></tr>

是否可以通过 BF 获取此电子邮件?如果是,我该怎么做?

Win7、Python3、BeautifulSoup

【问题讨论】:

标签: python web-scraping beautifulsoup


【解决方案1】:

电子邮件地址似乎隐藏在原始 html 中并由 javascript 代码生成。通过python2requestsjs2pyBeautifulSoup4,我终于找到了正确的电子邮件地址,希望这就是您想要的。

import bs4
import requests
import subprocess
import js2py
from HTMLParser import HTMLParser

html = requests.get('http://findyourvacationhome.com/find.php?property=5068927').content
soup = bs4.BeautifulSoup(html, 'html.parser')
raw_script = soup.find_all('table')[6].find_all('tr')[2].find_all('td')[2].script.contents[0]

script = raw_script.replace("""var text = link;document.write('<a href="mailto:'+link+'"  />'+text+'</a>');""", """""")
result = js2py.eval_js(script)
htmlparser = HTMLParser()
result = htmlparser.unescape(result)

print(result)

我分四步完成:

  1. requests获取网页的html
  2. 使用BeautifulSoup4解析html代码,得到用于生成邮件的javascript代码
  3. 使用js2py执行js代码,得到结果。
  4. 使用HTMLParser 转义字符串

【讨论】:

  • realhu,谢谢,我的意思是从网页而不是从保存的 html 中抓取电子邮件。
  • 它来自网页,你可以用requests获取html内容,类似html=requests.get('http://example.com').content,其他应该一样
  • realhu,请看一下我发布的html代码部分。您的代码没有提取电子邮件,因为有 JS 代码。
  • @GiveItAwayNow 是的。我终于搞定了,终于解决了,希望这是你想要的。
  • realhu,谢谢。不幸的是,由于某种原因,该代码对我不起作用。
【解决方案2】:

您需要获取已解析的 html。源本身只包含占位符和脚本。在 PowerShell 中,我会运行它来获取电子邮件:

$t = Invoke-WebRequest -Uri "http://findyourvacationhome.com/find.php?property=5068927"
$t.Links | Where-Object { $_.href -match 'mailto' } | Select-Object -ExpandProperty outertext

【讨论】:

  • Frode F.,我需要解析很多页面,我的意思是我必须使用 Python 脚本来完成。
  • 那么你不应该使用 powershell 标签。不懂 Python。
猜你喜欢
  • 2011-05-30
  • 2011-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-17
  • 1970-01-01
  • 2020-10-25
  • 1970-01-01
相关资源
最近更新 更多