본문 바로가기

Theory/DataScience

Python Beautiful Soup으로 웹 페이지의 내용 쉽게 가져오기~

오늘은 웹 페이지 내용을 쉽게 가져올 수 있는 Python 라이브러리인 Beautiful Soup을 소개할까 합니다. 아나콘다[바로가기]에서는 이미 포함되어 배포되구요. 아니어도 쉽게 설치[바로가기]할 수 있습니다. 뭐 여하튼 시작하죠~~~ 무턱대고^^

아주아주 심플한 뭐 그런 페이지입니다.^^. 

이 페이지의 소스를 보면 뭐~ 정말 간단하다는 것을 알 수 있죠^^

간단하게 beautiful soup4를 import해서 쉽게 웹페이지를 읽었습니다. Python3부터 urlopen은 urllib.request에서 가져와야 합니다. 그리고 BeautifulSoup에서 html을 읽는 옵션중 lxml은 빠르고 간편한 옵션을 가지고 있다고 안내하고 있네요^^

여기서 soup이라는 변수로 받았으니, soup.p라고 하면 p 태그를 보여줍니다. (제일 처음 것만) 물론 속성을 붙여서 계속 확인해볼 수 있죠. 위 그림처럼.

soup.descendants를 사용하면 하부 속성을 하나씩 찾아가볼 수 있습니다.

또한, soup.strings 속성으로 태그 안에 있는 글자들만 가져올 수 있습니다. 그러나 글자가 없는 경우 "\n"이 들어가 있죠

그게 실으면 soup.stripped_strings를 사용하면 됩니다.

그리고 특정 태그(soup.strong)에서 그 상위 태그를 프린트하는 코드가 위에 있네요~~

이번에는 각 태그를 이쁘게(pretty) 보여주는 soup.prettify()의 결과입니다.

혹은 find_all명령으로 모든 태그를다 검색할 수 있습니다.

그리고 정규식(regular expression)으로 'b'로 시작하는 태그나 't'가 들어간 태그를 검색할 수 있고, 또, 다수 태그를 한 번에 검색해볼수 있습니다.

태그의 이름만 따서 검색할 수도 있구요^^

혹은 위와 같이 태그의 속성 중에 id가 없는 것들만 추려내는 코드라던지

위와 같이 특정 태그를 검색할 수 있습니다.

ㅎㅎ 이번에는 주식 정보를 가져오는 것을 안내했던 제 글 하나를 가지고 이야기해보죠^^

넵~~ 잘 가져오구요^^

태그의 이름도 순서대로 다 열어보았습니다.

뭐 p 태그 (전 글쓸때 div 태그를 안써서) 전체를 가져와보구요^^

이미를 표현할 때 태두리를 polaroid 속성을 자주 사용하는데 그것도 찾아봤습니다.

혹은 pinkwink라는 단어가 들어가지 않은 href link만 출력해 볼 수도 있구요...

반대로 pinkwink가 들어간 링크만 찾아보기도 했습니다.

저렇게 찾긴 찾는데 갯수의 한계(limit)를 줄수도 있구요.

get_text()속성으로 글자만 가져올 수 있습니다.^^ 약간 정적인 페이지에 사용하기 딱 좋은 라이브러리인것 같습니다. 데이터를 얻고 가공을 하던 말던 간에 뭔가 데이터를 수집할 수 있어야하는데요. 웹 페이지 내용을 가져오는 것은 beautiful soup이 딱 적당한 것 같습니다.^^

반응형