selenium, shape file을 활용한 미세먼지 시각화(folium 사용)
좌표계 변환 및 다시 불러오기¶
import shapefile
from json import dumps
import geopandas as gpd
#좌표계 변환
sf=gpd.read_file('/home/ducj/data/ducj/files/json/shp/CTPRVN_201703/TL_SCCO_CTPRVN.shp',encoding='cp949')
sf=sf.to_crs(epsg='4326')
sf.to_file('/home/ducj/data/ducj/files/json/shp/CTPRVN_201703/test.shp',encoding='cp949')
#변환 후 불러오기
reader = shapefile.Reader('/home/ducj/data/ducj/files/json/shp/CTPRVN_201703/test.shp',encoding='cp949')
#shape file 을 json 파일로 변환하기 위한 코드
fields = reader.fields[1:]
field_names = [field[0] for field in fields]
buffer = []
for sr in reader.shapeRecords():
atr = dict(zip(field_names, sr.record))
geom = sr.shape.__geo_interface__
name=sr.record[2]
buffer.append(dict(type="Feature", \
properties=atr,id=name,geometry=geom))
#json파일로 저장
from json import dumps
geojson = open("/home/ducj/data/ducj/files/json/shp/CTPRVN_201703/pyshp-demo.json", "w")
geojson.write(dumps({"type": "FeatureCollection",\
"features": buffer}, indent=2) + "\n")
geojson.close()
미세먼지 자료 크롤링을 위한 코드¶
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options
from time import sleep
import pandas as pd
# create a new chrome session
options = Options()
options.add_argument('--headless')
options.add_argument('--no-sandbox')
driver = webdriver.Chrome(chrome_options=options, executable_path="/home/ducj/crawling/chromedriver")
driver.implicitly_wait(3)
driver.maximize_window()
url='https://www.airkorea.or.kr/web/sidoQualityCompare?itemCode=10007&pMENU_NO=101'
driver.get(url)
sleep(0.3)
html = driver.page_source
dfs = pd.read_html(html)
driver.close()
dfs[0]
크롤링으로 생성#54620; 데이터를 필요한 형태로 변환¶
#데이터 생성
data=pd.DataFrame([dfs[0].transpose()[1::][0].index,dfs[0].transpose()[1::][0]]).transpose()
data=pd.DataFrame({'area':data[0],'dust':data[1]})
#데이터 수치로 변환
data['dust']=data['dust'].astype(float)
data.reset_index(inplace=True,drop=True)
data=data.set_index('area')
print(data.dtypes)
data.head()
앞에서 생성한 json 파일 불러와 지역이름을 동일하게 변환¶
import folium
import json
json = json.load(open("/home/ducj/data/ducj/files/json/shp/CTPRVN_201703/pyshp-demo.json", encoding='utf-8'))
for i in range(17):
json['features'][i]['id']=data['dust'].index[i]
# for i in range(17):
# json['features'][i]['properties']['CTP_KOR_NM']=data['dust'].index[i]
지도형식으로 시각화¶
map=folium.Map(location=[37.5502, 126.982], tiles='Stamen toner') # 서울시
folium.Choropleth(
geo_data=json,
name='choropleth',
data=data['dust'],
key_on='feature.id',
fill_color='YlGn',
fill_opacity=0.7,
line_opacity=0.2).add_to(map)
folium.LayerControl().add_to(map)
map.save('/home/ducj/nas/data.html')
'python' 카테고리의 다른 글
matplotlib 정리(1) (0) | 2020.02.16 |
---|---|
주피터 노트북에 메모리 사용량 모니터링 하기 (0) | 2020.01.24 |
python 회귀분석 할 때 주로 사용할 것 같은 패키지 및 코드 (0) | 2020.01.14 |
power shell 을 활용하여 windows에 jupyter notebook 설치하기 (0) | 2019.06.27 |
파이썬3.7 지뢰찾기 (0) | 2019.04.08 |
파이썬 Selenium linux 환경 구축하기 (ubuntu)
크롬 설치하기
https://linuxize.com/post/how-to-install-google-chrome-web-browser-on-ubuntu-18-04/
크롬 버전 체크하기
google-chrome --version
크롬드라이버 설치하기
wget -N http://chromedriver.storage.googleapis.com/해당버전/chromedriver_linux64.zip
unzip chromedriver_linux64.zip
chmod +x chromedriver
sudo mv -f chromedriver /usr/local/share/chromedriver
sudo ln -s /usr/local/share/chromedriver /usr/local/bin/chromedriver
sudo ln -s /usr/local/share/chromedriver /usr/bin/chromedriver
python 실행 후 테스트하기
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options
from time import sleep
# create a new chrome session
options = Options()
options.add_argument('--headless')
options.add_argument('--no-sandbox')
driver = webdriver.Chrome(chrome_options=options, executable_path="/home/ducj/crawling/chromedriver")
driver.implicitly_wait(3)
driver.maximize_window()
# Navigate to the application home page
driver.get("http://www.google.com")
driver.get("https://www.google.co.kr/maps")
sleep(0.05)
search=driver.find_element_by_css_selector('input#searchboxinput.tactile-searchbox-input')
search.clear()
search.send_keys('대구대')
search.send_keys(Keys.ENTER)
driver.current_url
driver.close()
'ubuntu' 카테고리의 다른 글
라즈베리파이 openCV 설치 및 관절 인식 (2) | 2020.02.13 |
---|---|
jupyter-notebook에서 matplotlib 한글폰트 설정 (0) | 2020.02.13 |
우분투 팀뷰어 끊김 현상 (0) | 2019.03.26 |
주피터 서버 만들기(최종) (0) | 2019.03.25 |
NAS 설치(삼바, mysql) (0) | 2019.03.15 |
가설검정& 최강력검정
'통계' 카테고리의 다른 글
[SMOTE] 알고리즘 (0) | 2021.02.14 |
---|---|
기초통계분석 (0) | 2019.07.07 |
감마분포 & 균일분포 (0) | 2019.05.29 |
R에서 일반화 가법모형(설명X) (0) | 2019.04.13 |
scaling
'R > handling' 카테고리의 다른 글
expand.grid를 복수로 생성할 때 (0) | 2019.05.25 |
---|---|
reshape (0) | 2019.04.14 |
plyr 패키지를 통한 핸들링 (0) | 2019.04.12 |
파일 불러오기 (0) | 2019.04.08 |
XML package를 활용한 정적 크롤링
'R > crawling' 카테고리의 다른 글
네이버 실시간 검색어 크롤링하기 (0) | 2019.07.04 |
---|---|
기상청 자료 다운로드 (0) | 2019.05.22 |
PlotGoogleMaps 사용해 AWS, ASOS 위치 나타내기 (0) | 2019.04.11 |
크롤링을 활용한 미세먼지 실시간 시각화하기 (0) | 2019.03.21 |
RSelenium을 활용하여 위경도 가져오기 (0) | 2019.03.21 |