Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- #비정형 데이터 #네이버 #지도 #크롤링
- #K-means #Clustering
- 코딩
- 위도경도
- #위도#경도#비정형데이터#크롤링
- 웹크롤링
- 셀레니움
- 파이썬
- 웹매크로 #세잔느
- #크롤링 #웹문서
- 파이썬 셀레니움
- #비정형#카카오api#api#크롤링
- 숫자빼고 중복되는 코드동작법
- 구글 지오코드
- 카카오APi
Archives
- Today
- Total
지방이의 Data Science Lab
[Python] 네이버맵: json을 이용한 매장정보 크롤링 본문
요새 버전이 변경되었고 페이지수 안나오게 바껴서 구버전으로 이용하면 된다.
v4로 가서 활용하면 된다.
네이버맵: json을 이용한 매장정보 크롤링
원하는 매장 갯수 전부 긁어올 수 있는 유일했던 수단
앞서 셀레니움방식과 api로 크롤링하는 방식으로 매장정보(이름, 주소, 등등)을 긁어오려 했다.
앞선 방식들은 카카오맵이나 네이버맵 심지어 구글맵까지 해봤는데 갯수 제한이 걸려있었다.
이걸 해결할 수 있던 유일한 수단은 json이었다.
F12를 눌러서 필요한 headers값을 가져온 후, 붙여넣는다. json이 Series로 가져와지면
변환 후, 저정하면 끝이다.
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
|
from bs4 import BeautifulSoup as bs
from selenium import webdriver
import time
import numpy as np
import pandas as pd
name=[];address=[];roadaddress=[];abbraddress=[];tel=[];x=[];y=[];
for k in range(123):
url='https://map.naver.com/search2/local.nhn?query=%EC%98%AC%EB%A6%AC%EB%B8%8C%EC%98%81&page='+str(k+1)+'&type=SITE_1&queryRank=1&re=1&siteSort=0&menu=location&searchCoord=126.945975%3B37.5655025&sm=clk&mpx=09410114%3A37.5585674%2C126.9459641%3AZ9%3A0.0531249%2C0.1163489'
headers={ ~~~~}
res = requests.get(url = url,headers=headers)
a=res.json()
for i in a['result']['site']['list']:
a=(i["name"]) ;name.append(a)
b=(i["address"]);address.append(b)
c=(i["roadAddress"]);roadaddress.append(c)
d=(i["abbrAddress"]);abbraddress.append(d)
e=(i["telDisplay"]);tel.append(e)
f=(i["x"]) ;x.append(f)
g=(i["y"]);y.append(g)
time.sleep(3)
Oliveyoung = pd.DataFrame({'Name':name,'Address':address,'Roadaddress':roadaddress,'AbbrAddress':abbraddress,'Tel':tel,'Longitude':x,'Latitude':y})
Oliveyoung=Oliveyoung.replace(r'^\s+$', np.nan, regex=True)Oliveyoung["Name"].replace('',np.NaN,inplace=True)Oliveyoung["Address"].replace('',np.NaN,inplace=True)
Oliveyoung["Roadaddress"].replace('',np.NaN,inplace=True)
Oliveyoung["Tel"].replace('',np.NaN,inplace=True)
Oliveyoung["AbbrAddress"].replace('',np.NaN,inplace=True)
Oliveyoung["Longitude"].replace('',np.NaN,inplace=True)
Oliveyoung["Latitude"].replace('',np.NaN,inplace=True)
Oliveyoung.to_csv('Oliveyoung_json.csv', sep=",",encoding='ms949') #한글이 깨져서 인코딩
|
+추가
위 코드 headers 부분이 궁금하신 분은 아래를 참고해주세요.
'Python Selenium > Web Crawling' 카테고리의 다른 글
[R] 영어와 한글이 섞인 컬럼에서 한글인 행만 추출하는 방법 (0) | 2019.03.16 |
---|---|
[R] character로 이루어진 두 컬럼 병합시키기 (0) | 2019.03.15 |
[Python] 카카오 api를 이용한 크롤링(5): 카카오맵 주소 가져오기 코드 (0) | 2019.03.07 |
Python: 셀레니움으로 카카오맵 크롤링하기 (2) not clickable 문제 해결법 (0) | 2019.03.06 |
[Python] 셀레니움으로 카카오맵 크롤링하기 (1)스크롤 내리기 (0) | 2019.03.06 |
Comments