Post

웹 스크래핑으로 원하는 데이터만 쏙쏙!!

인터넷에는 수많은 웹페이지가 존재합니다. 제테크 수단으로 웹 페이지에 있는 데이터를 가지고 이용하기도 하는데요. 매번 같은 방법으로 데이터를 확인 하고 있다면 웹 스크래핑으로 원하는 데이터만 수집하여 정리 할 수 있습니다.


웹 페이지 구조

웹 스크래핑을 하기 위해서는 웹 페이지를 표시하는 HTML에서 원하는 데이터를 찾을수 있어야 합니다.

  • HTML 구조 및 태그
1
2
3
4
5
6
7
8
9
<html>
<head>
    <title>제목</title>
</head>
<body>
    <h1>제목</h1>
    <p>단락</p>
</body>
</html>
  • 브라우저에 내장된 개발자 도구로 데이터 찾기
    • ex: (Chrome) F12 또는 마우스 우클릭 > ‘검사’ google_page


웹 스크래핑 도구

  • 웹 스크래핑을 위한 프로그래밍 언어
    • 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']
        )







개발 환경 설정


예시

  • ‘서현동’의 아파트 단지 데이터를 가져오는 예제
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.