我是抓取和解析的新手,我不知道如何解决下一个问题。我需要从许多页面中删除电子邮件。 For example
电子邮件所在的代码部分:
<tr><td>Email:</td><td width="10"></td><td><script>var ylhrfq = "ypr";var bdnd = "ail";var byil = "st.c";var bwdbdf = "age@";var dqiex = ".c";var pner = "om";var qkfow = "gm";var azzl = "ie";var hgcr = "n.pl";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
答案 0 :(得分:1)
似乎电子邮件地址隐藏在原始html中并由javascript代码生成。通过python2
,requests
,js2py
,BeautifulSoup4
,我终于获得了正确的电子邮件地址,希望这就是您想要的。
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)
我分四步完成:
requests
BeautifulSoup4
解析HTML代码并获取用于生成电子邮件的JavaScript代码js2py
执行js代码并获得结果。HTMLParser
答案 1 :(得分:0)
您需要获取已解析的HTML。源本身仅包含占位符和脚本。在PowerShell中,我会运行它来获取电子邮件:
$t = Invoke-WebRequest -Uri "http://findyourvacationhome.com/find.php?property=5068927"
$t.Links | Where-Object { $_.href -match 'mailto' } | Select-Object -ExpandProperty outertext