Python,试图解析html以获得电子邮件地址

时间:2014-06-14 14:39:24

标签: python html regex html-parsing beautifulsoup

我使用beautifulsoup来获取电子邮件地址,但是我遇到了问题。 我不知道从哪里开始解析,以获得电子邮件地址。

> #input:     url
> #output:    address
> 
> def urlSC(url):
>     soup = BeautifulSoup(urllib2.urlopen(url).read())
>     #word =  soup.prettify() 
>     word = soup.find_all('a')
>     print word
>     return word

输出:

>     [<a href="default.aspx"><img alt="·Î°í" border="0" src="image/logo.gif"/></a>, <a href="http://www.ctodayusa.com"><img
> border="0" src="image/ctodayusa.jpg"><a></a>
>     </img></a>, <a></a>, <a href="mailto:rev_han777@yahoo.com" id="hlEmail">rev_han777@yahoo.com</a>, <a id="hlHomepage"></a>, <a
> href="javascript:img_up('','','');"><img border="0" class="img"
> src="upload/" vspace="10" width="1"/></a>, <a
> href="javascript:img_up('','','');"><img border="0" class="img"
> src="upload/" vspace="10" width="1"/></a>, <a
> href="javascript:openWin('http://maps.yahoo.com/maps_result?addr=2100
> De armoun Rd.&amp;csz=99515&amp;country=us')" id="hlMap"><img
> border='0"' src="images/globe.gif"> 위치</img></a>, <a
> href="javascript:print()"><img border="0" src="images/printer.gif">
> 프린트</img></a>, <a href="javascript:mail_go('rev_han777@yahoo.com',
> '2Y5E9%2bk0h%2b4P%2f0H3jEJTq9VUG%2f0gaj40')" id="hlSendMail"><img
> border="0" src="images/mails.gif"> 메일보내기</img></a>, <a
> href="javascript:history.go(-1)"><img border="0"
> src="images/list.gif">
>     </img></a>, <a href="UpdateAddress.aspx?OrgID=4102" id="hlModify"><img alt="" border="0" src="Images/Modify.gif"/></a>]

我想要这封电子邮件:rev_han777@yahoo.com

1 个答案:

答案 0 :(得分:2)

按ID获取a元素,从mailto:属性值中提取href后的所有内容:

link = soup.find('a', id='hlEmail')
print link['href'][7:]

演示:

>>> from bs4 import BeautifulSoup
>>> import urllib2
>>> url = "http://www.koreanchurchyp.com/ViewDetail.aspx?OrgID=4102"
>>> soup = BeautifulSoup(urllib2.urlopen(url))
>>> link = soup.find('a', id='hlEmail')
>>> print link['href'][7:]
rev_han seven seven seven at yahoo.com  #  obfuscated intentionally