모든 전자 메일을 추출하려는 데이터 덤프가 있습니다. 파이썬을 사용하여 데이터 덤프에서 전자 메일 추출
이
은import urllib2
import re
from bs4 import BeautifulSoup
url = urllib2.urlopen("file:///users/home/Desktop/emails.html").read()
soup = BeautifulSoup(url)
email = raw_input(soup)
match = re.findall(r'<(.*?)>', email)
if match:
print match
샘플 데이터 나 이메일이 <
과 >
태그 사이에 나열되어 있는지 명확하게 볼 수 있습니다
<tr><td><a href="http://abc.gov.com/comments/24-April/file.html">for educational purposes only</a></td>
<td>7418681641 <[email protected]></td>
<td>[email protected]</td>
<td nowrap="">24-04-2015 10.31</td>
<td align="center"> </td></tr>
<tr><td><a href="http://abc.gov.com/comments/24-April/test.html">no_subject</a></td>
<td>John <[email protected]></td>
<td>[email protected]</td>
<td nowrap="">24-04-2015 11.28</td>
<td align="center"> </td></tr>
<tr><td><a href="http://abc.gov.com/comments/24-April/test.html">something</a></td>
<td>Mark <[email protected]></td>
<td>[email protected]</td>
<td nowrap="">24-04-2015 11.28</td>
<td align="center"> </td></tr>
<tr><td><a href="http://abc.gov.com/comments/24-April/abc.html">some data</a></td>
덤프 내가 BeautifulSoup로
를 사용하여 작성한 코드입니다. 모든 전자 메일을 식별하고 인쇄 할 정규식을 사용하려고합니다. 그러나 실행시 전자 메일 (한 줄에 하나의 전자 메일) 만 추출하는 대신 전체 파일이 인쇄됩니다.어떻게 해결할 수 있습니까?
작동 (나는
a.html
로 샘플 파일을 저장 한). 'urllib2'를 사용하여 로컬 파일을 여는 이유는 무엇입니까? 그냥 f : soup = BeautifulSoup (f)'로 open ("/ path/to/file.html")을 사용하십시오. 다음으로,'raw_input (soup)'이 무엇을 기대합니까? 마지막으로, HTML 파서를 사용하기 시작했을 때 텍스트의 정규식 검색을 수행하는 이유는 무엇입니까? – MattDMo@MattDMo : 아하, 네가 맞다. raw_input이 사용자로부터 입력을 받았다는 것을 알지 못했습니다. 나는 수프 변수를 문자열로 구문 분석 할 것이라는 가정하에있었습니다. raw_input 라인이 없다면, re.findall 함수가 문자열의 두 번째 파라미터로 문자열을 기대하고 있다고 말하는 오류가 발생했습니다. – Piyush