오늘은 웹 페이지 내용을 쉽게 가져올 수 있는 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이 딱 적당한 것 같습니다.^^
'Theory > DataScience' 카테고리의 다른 글
맥OS 환경의 Anaconda에서 텐서플로우 tensorflow 설치하기 (6) | 2017.02.09 |
---|---|
딥러닝 세미나를 다녀왔습니다.^^ (16) | 2017.01.16 |
지리적 정보를 시각화할 때 괜찮은 Python 지도 모듈 Folium (18) | 2016.12.28 |
Python을 이용해서 구글에서 주식 정보 가져오기 (20) | 2016.12.09 |
Python pandas에서 excel 엑셀 파일 바로 읽어 오기 (12) | 2016.11.23 |
Python pandas에서 text 혹은 csv 파일 읽기 (26) | 2016.11.17 |
데이터 과학에서 필수 아이템 seaborn (4) | 2016.11.11 |