오늘은 크롤링을 주로 했음.
크롤링 = 쉽게 말하면 웹사이트에서 원하는 자료를 파이썬으로 가져오는 것.
그 가져올 때, 개발자도구 켜서 내가 가지고 오고 싶은 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 : 검색기능 만들어서 검색데이터 보내기