我正在尝试从电子邮件嵌套在脚本中的网站上抓取电子邮件地址,而简单的“ find / findAll + .text”并不能解决问题。
源html:
<script>EMLink('com','aol','mikemhnam','<div class="emailgraphic"><img style="position: relative; top: 3px;" src="https://www.naylornetwork.com/EMailProtector/text-gif.aspx?sx=com&nx=mikemhnam&dx=aol&size=9&color=034af3&underline=yes" border=0></div>','pcoc.officialbuyersguide.net Inquiry','onClick=\'$.get("TrackLinkClick", { LinkType: "Email", LinkValue: "mikemhnam@aol.com", MDSID: "CPC-1210", AdListingID: "" });\'')</script>
<br/>
我目前的方法是尝试这样的“ findAll +”正则表达式:
for email in soup.findAll(class_='ListingPageNameAddress NONE'):
print(email.findAll("([\w\._]+\@([\w_]+\\.)+[a-zA-Z]+)"))
但是在jupyter中,这仅返回[] :/
正则表达式是否存在问题,或者是尝试在此处整理电子邮件的更简单方法?
答案 0 :(得分:1)
尽管正则表达式随着时间的推移可能会更强大,但根据我的经验,脚本标记的这些部分仍保持不变,因此请考虑使用split的计划B
html ='''
<script>EMLink('com','aol','mikemhnam','<div class="emailgraphic"><img style="position: relative; top: 3px;" src="https://www.naylornetwork.com/EMailProtector/text-gif.aspx?sx=com&nx=mikemhnam&dx=aol&size=9&color=034af3&underline=yes" border=0></div>','pcoc.officialbuyersguide.net Inquiry','onClick=\'$.get("TrackLinkClick", { LinkType: "Email", LinkValue: "mikemhnam@aol.com", MDSID: "CPC-1210", AdListingID: "" });\'')</script>
<br/>
'''
print(html.split('LinkValue: "')[1].split('"')[0])
答案 1 :(得分:0)
您似乎未使用正确的findall
方法。您需要先import re
,然后使用findall()
方法,而不是findAll()
方法(请注意字母“ A”的大小写差异)。该函数的界面为:
re.findall(pattern, string, flags=0)
有关详细信息,请参见re
文档的this section,以查找所有副词。