我正试图从电子邮件嵌套在脚本中的网站上抓取电子邮件地址,而简单的“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: "[email protected]", MDSID: "CPC-1210", AdListingID: "" });\'')</script>
<br/>
我目前的方法是尝试一个“findAll +”正则表达式,如下所示:
for email in soup.findAll(class_='ListingPageNameAddress NONE'):
print(email.findAll("([\w\._]+\@([\w_]+\\.)+[a-zA-Z]+)"))
但在jupyter这只返回一个[] :/
是否有正则表达式的问题或更简单的方法来尝试梳理这里的电子邮件?
虽然正则表达式可能会随着时间的推移而变得更强大,但根据我的经验,脚本标记的这些部分仍然保持不变,因此请考虑使用拆分
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: "[email protected]", MDSID: "CPC-1210", AdListingID: "" });\'')</script>
<br/>
'''
print(html.split('LinkValue: "')[1].split('"')[0])
您似乎没有使用正确的findall
方法。你需要import re
然后使用findall()
方法,而不是findAll()
方法(注意字母“A”的大小写差异)。该功能的界面是:
re.findall(pattern, string, flags=0)
有关详细信息,请参阅this section doc的re
查找所有副词。