* 본 포스팅은 주피터 노트북에서 진행하였다.
from bs4 import BeautifulSoup
html = """<html > <head > <title class ="t" id ="ti" > test site</title > </head > <body > <p > test</p > <p > test1</p > <p > test2</p > </body > </html > """
soup = BeautifulSoup(html,'lxml')
tag_title = soup.title
print(tag_title['class'])
tag_title.get('class') #get으로 class의 속성을 가져와라
#둘다 같은 결과
만약 오류가 뜬다면 이대로 입력해주자! 주피터 노트북에서는 코드 앞에 !을 붙이면 된다. cmd로 할 경우 !을 빼면 된다.
!pip install beautifulsoup4
!pip install lxml
tag_title.attrs #attribute
이 둘의 차이는
tag_title.get('class1' )
tag_title['class1' ]
tag_title.get('class1',default="hi") #값이 없을 때
data_text = tag_title.text
data_text
data_text = tag_title.string
data_text
같은 값을 가져오지만 타입이 다르다
data_text = tag_title.text
data_string = tag_title.sring
print ("text : " ,data_text, type (data_text))
print ('string : ' ,data_string, type (data_string))
tag_p = soup.p
tag_p
data_text = tag_p.text
data_string = tag_p.string
print ('text : ' ,data_text, type (data_text))
print ('string : ' ,data_string, type (data_string))
html = """<html> <head><title>test site</title></head> <body> <p><span>test1</span><span>test2</span></p> </body></html>"""
soup = BeautifulSoup(html,'lxml' )
tag_p = soup.p
tag_p
data_text = tag_p.text
data_string = tag_p.string
print ('text : ' ,data_text, type (data_text))
print ('string : ' ,data_string, type (data_string))
조건문을 활용하여 데이터를 확인할 수 있다. 아래의 코드는 span태그가 있는지의 여부를 묻는다.
if tag_p.span.string !=None :
print ('있다' )
contents 속성과 children 속성을 이용하여 자식태그를 가져올 수 있다.
contents 속성을 이용하여 list 형태로 자식 태그를 가져온다.
tag_p_children = soup.p.contents
print (tag_p_children)
tag_p_children = soup.p.children
tag_p_children
문제 ) 반복문을 이용하여 둘다 출력하기
예시
a_tuple = (1 ,2 ,3 )
b_iterator = iter (a_tuple)
print (b_iterator.__next__())
print (b_iterator.__next__())
print (b_iterator.__next__())
이것을 응용하자
tag_p_contents = soup.p.contents
tag_p_contents
tag_p_children = soup.p.children
tag_p_children
for i in tag_p_contents:
print (i)
for i in tag_p_children:
print (i)