티스토리 뷰
Beautiful Soup
download : http://www.crummy.com/software/BeautifulSoup
install : >>>python setup.py install
>>> html = """ <html> <head> <title> test web </title> </head> <body> <p align = 'center'> text contents </p> <img src = 'c:\python34\koala.jpg' width='500' height='300'/> </body> </html> """ |
find() , find_all()
from bs4 import BeautifulSoup bs = BeautifulSoup(html) print(bs.prettify()) bs.find('title') # 인수의 태그를 가지고 온다. bs.find_all('p') # 해당 태그를 한꺼번에 가지고 온다 head_tag = bs.find('head') # html 내에서 <head>부분의 객체를 리턴 head_tag.find('title') # 찾아냄 head_tag.find('p') # 찾아내지 못함 복합태그 찾기 body_tag = bs.find('body') list1 = body_tag.find_all(['p', 'img']) # find_all 인수에 문자열이나 정규식 가능 for tag in list1 : print(tag) bs.find_all(align='center') #속성을 인자로 검색 bs.find_all(text='textContents') # 태그사이의 값을 기준으로 검색 import re bs.find_all(text=re.compile('text +')) #정규식 text 에 문자열 text와 뒤에 아무글자 bs.find_all('p', limit=2) # p 태그 2개만 리턴 |
문장 가져오기
body_tag = bs.find('body') p_tag = body_tag.find('p') p_tag.string # 첫 p태그의 문장을 가져옴 strings = body_tag.strings for string in strings : print(string) #body안의 모든 문장을 가져와 출력 body_tag = bs.find('body') body_tag.get_text() #모든 문자열을 하나의 문자열로 출력 문자열내 \n 포함됨 body_tag.get_text(strip=True) #모든 문자열 \n 없이 출력 body_tag.get_text('-', strip=True) #모든 문자열간 '-' 표시 출력 |
'Python' 카테고리의 다른 글
데이터 피클하기 (pickle) (0) | 2017.01.30 |
---|---|
내장함수 (0) | 2017.01.26 |
파일 생성 및 수정 (0) | 2017.01.07 |
os.path 모듈 (0) | 2017.01.07 |
OS 모듈 (0) | 2017.01.07 |