23.02.02

박무연·2023년 2월 2일
0

🟣EDA

목록 보기
3/9
post-thumbnail

1. 프로젝트

- 시카고 샌드위치 맛집을 가져오자!

  • 가게이름
  • 대표메뉴
  • 가격
  • 가게주소

2. Open

- Open!

from urllib.reqeust import Request, urlopen
from bs4 import BeautifulSoup

url = ~~~
req = Request(url, headers={'User-Agent' : 'Chrome'}) # 안열릴수도 있기때문에 
html = BeautifulSoup(req,'html.parser')

3. 필요한거 가져오기

temp_one = soup.find_all('div','sammy') 
  • 랭크 , 메뉴, 링크, 카페명이 담겨져 있다

- 랭크 가져오기

rank = temp_one.find('div',class_='sammyRank').text
rank = temp_one.select_one('div.sammyRank).text

- 메뉴명 가져오기

menu = temp_one.find('div',class_='sammyListing').text
menu = temp_one.select_one('div.sammyListing').text

- 링크

link = temp_one.find('a').get('href') # 대괄호로 넣어도 된다
link = temp_one.select_one('a')['href']

- 메뉴와 카메명 가져오기

  • 정규 표현사용
  • 출력물이 더럽다! 지워주자
1. re.split(a,b)을 사용하요 ',.' 제거
	- a: 지울 것 , b : 변수

2. re.search('\$\d+\.(\d+)?, 변수명).group()
	- $ 표시가 있고 숫자가 있고 그 뒤에 . 이 있다 뒤로는 숫자가 있을 수도 있다
  • 앞뒤를 구분하여 메뉴와 카페명 가져온다

3. 저장하기

- 반복문을 사용하여 저장!

4. 가격 주소 가져오기

  • 저장해둔 링크를 바탕으로 다시 반복!

5. 지도 시각화

- 목적

  • 현재 가게명을 가지고 있다
  • 가게명을 googlemaps로 넣어서 위도 경도를 찾아주고 이를 새로운 df로 만들어준다
  • 위도 경도를 바탕으로 marker 해준다

- 코드로 정리하기

import folium
import pandas as pd
import googlemaps
import numpy as np

lat = []
lng = []

for idx, row in df.iterrows():
	if now row['Address'] == 'Multiple loaction':
    	target_name = row['Address'] + ',' + 'Chicago'
        gmaps_output = gmaps.geocode(target_name)
        # 여기까지 하면 위치정보 흭득! 
        # 위도 경도 정보는 geometry 태그안에 있다
        tmp = gmaps_ouput[0].get('geometry')
        lat.append(tmp['location']['lat'])
        lng.append(tmp['location']['lng'])

df['lat'] = lat
df['lng'] = lng
# df에 위도 경도 넣기!

mapping = folium.Map(location=[~~~,~~~],zoom_start=11)

for idx, row in df.iterrows():
	if not row['Address'] == 'Multiple location':
    	folium.Marker(row['lat'],row['lng'], popup = row['cafe']).add_to(mapping)
profile
Easy day!

0개의 댓글