본문 바로가기

아주 미비한 코딩/Python5

[Python] 네이버 플레이스(naver place) 리뷰 크롤링 지난 번 네이버 플레이스를 통해 크롤링을 해봤는데, 이번에는 리뷰를 가져오는 코드를 실습해보았다. 특히 수집된 데이터를 다시 자연어 처리해 다른 분석을 해볼 때도 유용할 것 같다. 그리고 최근에 알게 된 사실인데, 크롤링(Crawling)과 스크래핑(Scraping)은 구분되는 개념이지만 그냥 크롤링이라는 명칭을 썼다. 사실 지금 하는 실습은 스크래핑이라는 것을 밝혀둔다. 1.탐색 네이버 리뷰는 어디서 볼 수 있을까? 네이버 리뷰는 크게 2가지 방법으로 노출되고 있는데, 네이버 맵과 네이버 플레이스다. 네이버 맵으로 접근하는 건 다른 개발블로그에서 많이 봤었고, 효율적인 코드가 많았다. 맵에서는 검색 기반이라 특정 페이지로 바로 들어가는 건 불가능하고, 오직 검색을 통해서만 접근 할 수 있다. 그런데 첫.. 2023. 11. 13.
[Python] json 파일 읽어서 csv로 저장하기 아래는 json 파일로 되어 있는 파일을 파이썬으로 읽어 엑셀로 저장하기 위한 코드이다. 우선 json은 파이썬의 딕셔너리처럼 키와 값, 두 쌍으로 이루어진 자료형식이다. 오픈 API를 사용하거나 크롤링을 진행할 때 자주 만나게 되고 아래 방법을 알기 전에는 엑셀로 전처리하기도 했는데 상당히 비효율적이고 휴먼에러가 발생한 여지가 있다. 그래서 아래와 같이 json파일을 읽어오면 휠씬 빠르게 가공하여 활용할 수 있다. import requests import pandas as pd import json url = '' #json URL response = requests.get(url) contents = response.text json_ob = json.loads(contents) body = json.. 2023. 1. 24.
[Python] 두 좌표사이의 거리 구하기 - Haversine distance 두 좌표(위도, 경도) 사이의 거리를 구할 때, 거리 측정 함수인 허버사인 거리(Haversine distance)을 사용하는데 지구의 지름을 6,371km로 두고 킬로미터 단위로 두 지점의 사이의 거리를 구해준다. 파이썬으로 나타내면 다음과 같다. from math import sin, cos, sqrt, atan2 def haversine_distance(lat1, lon1, lat2, lon2): R = 6371 # radius of Earth in kilometers dlat = lat2 - lat1 dlon = lon2 - lon1 a = sin(dlat / 2)**2 + cos(lat1) * cos(lat2) * sin(dlon / 2)**2 c = 2 * atan2(sqrt(a), sqrt(.. 2023. 1. 19.
[Python] 네이버 플레이스 크롤링(selenium, BS4) 특정 지역의 데이터셋을 가지고 공부해보고 싶은게 있어서 지역 정보가 필요했다. 그런데 무식하게 긁어올 수 없어서 웹크롤러를 만들어보기로 했다. 바로 떠오른 생각은 네이버 지도에서 가져오는 것인데, 이게 생각보다 쉽지 않았다. 그래서 패쓰하고 네이버 플레이스 서비스로 접근했다. (OPEN API도 있었는데 전화번호 정보는 가져오지 못하는 한계가 있었다.) 우선 기본적인 라이브러리를 불러온다. 네이버에서는 일단 크롤링에 대해서 관대하지 않기 때문에 몇 가지 주의사항이 있다. from selenium.webdriver.common.by import By from urllib3.util.retry import Retry from requests.adapters import HTTPAdapter from bs4 .. 2022. 12. 20.
[Python] json 형식 읽기 import json from pandas.io.json import json_normalize json_string = ('json 문자열') 2022. 12. 14.