이전 포스팅과 이어지는 내용입니다. 아래 링크를 참조해 주시기 바랍니다.
▶[Python] - [Python] Requests, BeautifulSoup로 크롤링(Crawling), 데이터 추출하기(Data Extraction) - 1
| 시작하기 전에
이번 포스팅에서 사용할 HTML 코드를 받아야합니다. 아래의 python 스크립트를 실행하시면 됩니다.
import requests from bs4 import BeautifulSoup page = requests.get("http://dataquestio.github.io/web-scraping-pages/simple.html") soup = BeautifulSoup(page.content, 'html.parser')
| BeautifulSoup로 모든 태그 정보 한 번에 찾기
page.content라는 URL에서 막 다운받은 HTML 코드에서 p태그의 정보를 찾을려면 다음과 같은 코드를 입력하면 됩니다.
p_data = soup.find_all('p') print(p_data) data = p_data[0].get_text() print(data)
[<p>Here is some simple content for this page.</p>] Here is some simple content for this page.
find_all 메서드를 통해서 HTML 문서에 포함된 모든 p 태그의 정보를 찾게 됩니다. 그리고 리스트 형으로 그 데이터를 반환하게 되죠. 그 중 원하는 p태그의 데이터를 얻고 싶으면 인덱스를 통해 접근하여 get_text 메서드를 사용하면됩니다.
맨 처음 특정 태그의 정보를 얻고 싶으면 find 메서드를 이용하시면 됩니다. 여기서는 특별히 다루지 않겠습니다.
| class 와 id를 통해 태그 찾기
CSS에서는 class와 id를 통해 어떤 HTML 태그에 해당 스타일을 적용할 지 결정하게 됩니다. 이 점을 이용해서 BeautifulSoup에서는 쉽게 데이터를 추출하는 데 사용합니다.
이제부터는 위의 간단한 HTML 예제 말고 좀 더 복잡한 HTML 예제를 사용하도록 하겠습니다.
URL = "http://dataquestio.github.io/web-scraping-pages/ids_and_classes.html" page = requests.get(URL) soup = BeautifulSoup(page.content, 'html.parser') print(soup.prettify())
<html> <head> <title>A simple example page</title> </head> <body> <div> <p class="inner-text first-item" id="first"> First paragraph. </p> <p class="inner-text"> Second paragraph. </p> </div> <p class="outer-text first-item" id="second"> <b> First outer paragraph. </b> </p> <p class="outer-text"> <b> Second outer paragraph. </b> </p> </body> </html>
위에서 사용했었던 find_all 메서드를 사용하여 'p' 태그인데 class명이 outer-text인 태그들을 찾도록 하겠습니다.
p_tags = soup.find_all('p', class_='outer-text') print(p_tags)
[<p class="outer-text first-item" id="second"> <b> First outer paragraph. </b> </p>, <p class="outer-text"> <b> Second outer paragraph. </b> </p>]
단순 class명 만으로도 태그 정보를 찾을 수 있습니다.
outer_texts = soup.find_all(class_='outer-text') print(outer_texts )
[<p class="outer-text first-item" id="second"> <b> First outer paragraph. </b> </p>, <p class="outer-text"> <b> Second outer paragraph. </b> </p>]
id를 통해 태그 정보를 찾는 코드입니다.
first_id_tag = soup.find_all(id="first") print(first_id_tag)
[<p class="inner-text first-item" id="first"> First paragraph. </p>]
- p a - 모든 p 태그 안의 a 태그를 찾기
- body p a - 모든 body 태그 안의 p 태그 안의 a 태그를 찾기
- p#first - 아이디 명이 first인 p 태그 찾기
- p.outer-text - 클래스 명이 outer-text인 p 태그 찾기
- body p.outer-text - body 태그 안의 클래스 명이 outer-text인 p 태그를 찾기
div_p_tag = soup.select("div p") print(div_p_tag)
[<p class="inner-text first-item" id="first"> First paragraph. </p>, <p class="inner-text"> Second paragraph. </p>]
도움이 되셨다면 공감 버튼 꾹 눌러주시면 감사하겠습니다
참고자료 : https://www.dataquest.io/blog/web-scraping-tutorial-python/
'파이썬 > 파이썬 재무제표 웹 스크래핑' 카테고리의 다른 글
[Python 재무제표 크롤링 #7] NAVER 금융에서 재무제표 데이터, 파이썬 데이터 프레임으로 추출하기 (16) | 2018.11.18 |
---|---|
[Python 재무제표 크롤링 #6] NAVER 금융에서 재무제표 HTML 요소 추출하기 (0) | 2018.11.18 |
[Python 재무제표 크롤링 #4] Requests, BeautifulSoup로 크롤링(Crawling), 데이터 추출하기(Data Extraction) - 1 (2) | 2018.11.16 |
[Python 재무제표 크롤링 #3] 파이참(PyCharm), 파이썬(Python) 개발환경 설치 (0) | 2018.11.14 |
[Python 재무제표 크롤링 #2] Anaconda를 통한 Python 설치하기 (0) | 2018.11.12 |
이 글을 공유하기