티스토리 뷰

Python

Beautiful Soup

Yokina 2017. 1. 7. 23:29

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
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/10   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함