과제1- 이디야, 스타벅스 데이터분석

화이팅·2023년 1월 8일
0

eda

목록 보기
6/29

이디야와 스타벅스는 근접하게 위치하고 있는가?

test1은 그래도 마무리는 했는데 2는 ....
다시 열심히 해야겠다는 다짐하게 된다.


starbucks

  • 우선 selenium으로 페이지 접근, 서울 선택, 전체 선택, 검색 결과 가져오기
  • beautifulsoup사용하기 위해서는 html 파싱해야됨
html=driver.page_source # 현재 내가 셀레니움으로 접근한 페이지 소스를 html에 저장
dom=Beautifulsoup(html,'html.parser') #파싱
  • beautifulsoup 사용하기 위해서 seoul_list=dom.select로 다시 리스트 가져오기

  • seoul_list[0]에 내가 원하는 정보 들어가 있음

내가 쓴 코드 : seoul_list[0].text.split()[0] -> '역삼아레나빌딩'

더 간편하게 : seoul_list[0]['data-name']
  • seoul_list[0]에서 seoul_list[0]['data-name']주소 가져오기
<li class="quickResultLstCon" data-code="3762" data-hlytag="null" data-index="0" data-lat="37.501087" data-long="127.043069" data-name="역삼아레나빌딩" data-storecd="1509" style="background:#fff"> <strong data-my_siren_order_store_yn="N" data-name="역삼아레나빌딩" data-store="1509" data-yn="N">역삼아레나빌딩  </strong> <p class="result_details">서울특별시 강남구 언주로 425 (역삼동)<br/>1522-3232</p> <i class="pin_general">리저브 매장 2번</i></li>

seoul_list[0]['data-name']로 가져올 수 있었던 이유 
: li 태그 안에 존재했기 때문에

<p class="result_details">서울특별시 강남구 언주로 425 (역삼동)<br/>1522-3232</p> <i class="pin_general">리저브 매장 2번</i></li>
address는 p태그에 존재하기 때문에 같은 형식으로 가져올 수 x

내가 쓴 코드 : address=seoul_list[0].text.split()[1:5] 
-> 문제점 : ['서울특별시', '강남구', '언주로', '425']

간결한 코드 : seoul_list[0].select_one('p').text[:-9] # 뒤에 전화번호 제거

ediya

  • 태그로 가져오기
내가 쓴 코드 : address=contents[0].text[5:] 
문제점 : 우연하게 다 매장명이 5글자였음 / 8글자면 망함..

간결한 코드 : contents[0].select_one('dd') # 태그 이용해서 추출하기 
-> <dd>서울 중랑구 망우로 460 (망우동)</dd> 
-> 텍스트만 추출하고 싶음

내가 쓴 코드 : contents[3].select_one('dt').replace('<dt>','').replace('</dt>','')
오류남

간결한 코드 : contents[0].select_one('dd').text
  • 데이터 합치기
    brand 컬럼 추가 후 데이터 합치기
cafe_df=pd.concat([std_df,ediya_df],axis=0)
>
인덱스 reset
cafe_df.reset_index(inplace=True)
>
인덱스 하나 더 생성됨 -> 삭제해줌
del cafe_df['index']
profile
하하...하.

0개의 댓글