전에 구축한 파이썬 개발 환경을 이용해 웹에서 데이터를 긁어오는 기능을 개발해 보겠다.
BeautifulSoup4(이하 bs4)을 사용해 데이터를 긁어올 것이며, 예제로는 아파트 건설사의 분양 일정을 긁어오는 기능을 개발해 보려 한다.
하지만 정식으로 제공되는 api를 통해 데이터를 모아오는것이 아니기 때문에, 연습용으로만 해보는것이 좋을듯 하다.
전에 구축한 jupyter환경에서 새 파이썬 파일을 생성하고, 필요한 라이브러리들을 임포트 한다.
import requests
from bs4 import BeautifulSoup as bs
import pandas as pddata=[]
그다음. 먼저 자이 홈페이지의 데이터를 긁어오는 부분을 작성하겠다. 먼저 홈페이지를 보자.
여기에서 몇월에 어디가 분양을 하는지를 긁어오고 싶다. 크롬의 개발자 도구를 통해 확인해보면, target=’_blank’인 엘리멘트에 링크와 이름이 있는것을 확인할 수 있다.
확인된 정보를 바탕으로 bs4를 이용해 데이터를 긁어오겠다. 혹시 몰라 주소는 빼두었으나, 홈페이지를 가보면 쉽게 찾을 수 있다. 코드를 보면, requests를 통해 위 페이지를 읽어오고, bs4를 이용해 코드를 불러온 다음, target=’_blank’인 엘리멘트들의 목록을 찾는다.
그다음, 찾은 목록에서 아이템의 내용을 문자로 읽어오고(item.string), 엘리멘트의 어트리뷰트 중 href를 읽어온다(item.attrs[‘href’]). 태그 문서(xml, html 등)를 다뤄봤다면 쉽게 이해할 수 있을것이다.
#자이 홈페이지 크롤링
xi_res=requests.get('긁어올 곳의 주소')
xi_soup=bs(xi_res.content,'html.parser')
xi_items=xi_soup.find_all(target='_blank')
for item in xi_items:
datacol=["",item.string, item.attrs['href']]
data.append(datacol)
print(datacol)
위의 코드를 실행하면 결과는 아래와 같다.
필요없는 자료도 있지만, 원하는 자료들이 뽑아졌다. 같은 방식으로 힐스테이트, 롯데 캐슬 등 다른 홈페이지 정보도 긁어온다.
이제 이걸 csv 파일로 저장하려 한다. 수집된 정보는 data 배열에 저장해 뒀기 때문에, 이걸 csv 파일로 저장하겠다.
df=pd.DataFrame(data)
df.to_csv('HomeCal.csv',header=False, index=False)
실행하면 다음과 같이 csv 파일이 생성된다.