파이썬 모듈을 사용하여 HTML코드를 스크래핑할 수 있다.
우선 Beautiful Soup를 가져온다.
from bs4 import BeautifulSoup
파일을 열때와 동일하게 진행한다.
encoding="UTF8"로 지정한 이유는 코드 실행시 아래 오류코드가 발생했기 때문에 구글링하여 지정해주었다.
UnicodeDecodeError: 'cp949' codec can't decode byte 0xe2 in position 280: illegal multibyte sequence
with open("website.html",encoding="UTF8") as file :
contents = file.read()
BeautifulSoup()를 지정해주고 읽을 파일(contents)와 parser를 "html.parser"로 지정한다.
soup = BeautifulSoup(contents, "html.parser")
제목을 가져올 수 있고,
print(soup.title)
# <title>Angela's Personal Site</title>print(soup.title.string)
# Angela's Personal Site
prettify()함수로 전체 html 코드를 가져올 수 있다.
print(soup.prettify())
객체로 지정한 soup뒤에 .태그명 을 붙혀주면 해당 태그를 가져올 수 있다.
find_all 함수를 사용하여 html 내에 모든 코드를 가져올 수 있다.
all_anchor_tag = soup.find_all(name="a")
print(all_anchor_tag)
[<a href="<https://www.appbrewery.co/>">The App Brewery</a>, <a href="<https://angelabauer.github.io/cv/hobbies.html>">My Hobbies</a>, <a href="<https://angelabauer.github.io/cv/contact-me.html>">Contact Me</a>]
for 구문과 getText()를 사용하여 앵커태그 내의 텍스트만 가져오는것도 가능하다.
all_anchor_tag = soup.find_all(name="a")
for tag in all_anchor_tag :
print(tag.getText())
The App Brewery
My Hobbies
Contact Me
get("href")로 앵커태그의 링크만 가져올 수도 있다.
all_anchor_tag = soup.find_all(name="a")
for tag in all_anchor_tag :
print(tag.get("href"))
<https://www.appbrewery.co/>
<https://angelabauer.github.io/cv/hobbies.html>
<https://angelabauer.github.io/cv/contact-me.html>