상세 컨텐츠

본문 제목

221104 drf심화 프로젝트 2일차

카테고리 없음

by hunss 2022. 11. 4. 02:41

본문

오늘은 크롤링을 주로 했음.

크롤링 = 쉽게 말하면 웹사이트에서 원하는 자료를 파이썬으로 가져오는 것.

그 가져올 때, 개발자도구 켜서 내가 가지고 오고 싶은 ClassName > Tag 이름으로 찾아서 가져올 수 있음.

예를 들면

reviews = driver.find_element(By.CLASS_NAME,"list_evaluation").find_elements(By.TAG_NAME, "li")

이런식인데, CLASS_NAME이 list_evaluation 안에 TAG_NAME이 li 인 것들을 reviews에 저장한다.

여기서 처음은 find_element고 두번째는 find_elements 인것도 중요함.

CLASS_NAME은 하나고, 그 안에 li 이 여러개 였기 때문에 -s 가 붙음.


read_csv할 때, window는

    df1 = pd.read_csv('jejulist.csv', encoding='UTF-8')

 

encoding='UTF-8' 해야함


for review in reviews:
            review_content = {}
            review_tag ={}
            if not review.text : #or driver.find_element(By.CLASS_NAME,"group_likepoint").find_elements(By.TAG_NAME, "span"):
                continue
            try:
                tags = review.find_element(By.CLASS_NAME, "group_likepoint").find_elements(By.TAG_NAME, "span")
                review_tag['tag'] = [x.text for x in tags]
            except NoSuchElementException:
                review_tag['tag'] = None

            try:
                review_content['content'] = review.find_element(By.CLASS_NAME, "txt_comment").text
            except NoSuchElementException:
                # 식별값(있지만 없어도 되는 값)
                review_content['content'] = None

크롤링 가져올 때, 내가 원하는 값이 없을 수 있기 때문에 try / except 로 없을 때를 대비해야한다.

 


크롤링한 데이터를 JSON파일로 저장하는 법

def toJson(store_info):
    with open('store_info.json', 'w', encoding='utf-8') as file :
        json.dump(store_info, file, ensure_ascii=False, indent='\t')
       
toJson(store_info)

이런식으로 하면 store_info.json 파일이 생성된다.

결국 우리는 안쓰긴 함 왜?


디비에 저장하기 위해 json파일로 만드는 것을 시도한데

약간 야매로 쉽게 하는 법이 있다.

크롤링하는 코드를 함수로 만들어서 함수를 실행시키고 객체를 만들어서 객체를 저장하면 되는 것..

    for url in store_detail_list:
        url = url.split('/')
        print(url[-1])
        Store(store_id=url[-1]).save()

 

Store 라는 모델을 가져와서 store_id 에 url을 넣어서 .save()해서 디비에 저장함.


내일 할 일

1. 아직 크롤링 한 모든 데이터를 저장하지 않았기 때문에, 크롤링 데이터 디비에 저장 완료하기

2. github 으로 협업하는데 pull 할 때 계속 오류 나기 때문에, 한번 repo 정리를 해야할 듯

3. requirements.txt 갱신

4. import 정리

5. 크롤링으로 이틀이나 썻으니까, 이제 백엔드 기능 만들기

  • 5-1 : 크롤링할 때, 데이터 코사인유사도 판별해서 머신러닝 완성하기
  • 5-2 : 처음 메인화면에서 보여줄 데이터 보내기
  • 5-3 : 검색기능 만들어서 검색데이터 보내기