HTML 구문 분석에 대한 Beautiful Soup를 사용하여 해결 방법 :
from bs4 import BeautifulSoup
import re
html = ... # your html goes here
soup = BeautifulSoup(html)
telephone_p = soup.find_all(text=re.compile(r'Tel:'))
telephone = telephone_p[0].replace('Tel:', '').strip()
fax_p = soup.find_all(text=re.compile(r'Fax:'))
fax = fax_p[0].replace('Fax:', '').strip()
address_ps = soup.find_all('p')[:2]
address = '\n'.join([p.text for p in address_ps])
print(telephone)
print(fax)
print(address)
결과 :
+41 414220702
+41 414220929
Adress 37/41 Portbell
P.O.Box 12339, Kampala
대체 솔루션 , 스탠드 만 사용 라이브러리 :
import re
html = ... # your html goes here
telephone = re.search('Tel: ([+\d\s]+)', html).groups()[0]
fax = re.search('Fax: ([+\d\s]+)', html).groups()[0]
paragraphs = [line for line in html.split('\n') if line.startswith('<p>')]
address = '\n'.join([p.replace('<p>', '').replace('</p>', '')
for p in paragraphs[0:2]])
print(telephone)
print(fax)
print(address)
결과 : 위와 동일합니다.
이 솔루션은 깨지기 쉬운, 그리고 (아마도 장관으로) 중단 할 경우 HTML 변경의 형식입니다.
HTML이 항상 같은 방식으로 포맷된다는 것을 알고 계십니까? – senshin
@senshin 예, 항상 같은 방식으로 서식을 지정합니다. – user3146138