웹 스크래핑으로 원하는 데이터만 쏙쏙!!
인터넷에는 수많은 웹페이지가 존재합니다. 제테크 수단으로 웹 페이지에 있는 데이터를 가지고 이용하기도 하는데요. 매번 같은 방법으로 데이터를 확인 하고 있다면 웹 스크래핑으로 원하는 데이터만 수집하여 정리 할 수 있습니다.
웹 페이지 구조
웹 스크래핑을 하기 위해서는 웹 페이지를 표시하는 HTML에서 원하는 데이터를 찾을수 있어야 합니다.
- HTML 구조 및 태그
1
2
3
4
5
6
7
8
9
<html>
<head>
<title>제목</title>
</head>
<body>
<h1>제목</h1>
<p>단락</p>
</body>
</html>
웹 스크래핑 도구
- 웹 스크래핑을 위한 프로그래밍 언어
- Python : 문법이 비교적 쉬움
- JavaScript
- Ruby
- …
- 웹 스크래핑을 위한 Python 라이브러리
- BeautifulSoup : HTML,XML 데이터를 추출하기 용이
- Scrapy : 복잡한 데이터 추출하고, 동시에 여러 처리를 하는데 용이
- Selenium(+ Selenium Wire) : 웹페이지와 상호작용을 통한 자동화 용이
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from seleniumwire import webdriver # Import from seleniumwire
# Create a new instance of the Chrome driver
driver = webdriver.Chrome()
# Go to the Google home page
driver.get('https://www.google.com')
# Access requests via the `requests` attribute
for request in driver.requests:
if request.response:
print(
request.url,
request.response.status_code,
request.response.headers['Content-Type']
)
개발 환경 설정
- Python
- 다운로드&설치 https://www.python.org/downloads
- Visual Studio Code
- 다운로드&설치 https://code.visualstudio.com
- Python Extension을 설치
- Selenium
1
pip install selenium
- Selenium Wire
1 2
pip install selenium-wire pip install blinker==1.7.0 // 상위 버전은 에러 발생함
예시
- ‘서현동’의 아파트 단지 데이터를 가져오는 예제
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
from seleniumwire import webdriver
from selenium.webdriver.common.by import By
import time
# 지역검색
query = '서현동'
url = 'https://m.land.naver.com/search/result/' + query
driver = webdriver.Chrome()
driver.get(url)
time.sleep(2)
# 단지 목록 클릭
driver.find_element(By.XPATH, '//*[@id="_countContainer"]/a[2]').click()
time.sleep(2)
# 단지 이름 출력
apt_titles = driver.find_elements(By.CLASS_NAME, "title_place")
for i, apt_title in enumerate(apt_titles):
title = apt_title.text
print(title)
# 단지 하이퍼링크 추출
...
# 단지 매물 클릭
...
# 전체거래유형(매매, 전세) 선택
...
# json 데이터 가공
...
# 전고점 대비 몇 25프로 이상 하락 + 전세가율 XX% 이상
...
Next
웹 스크래핑을 하기 위해서 기본적으로 알아야 되는 사항들은 다른 포스팅으로 자세히 정리합니다.
- HTML 구조
- 파이썬 기본 문법
- selenium 사용법
This post is licensed by kyumdroid.