Wecode/Project

웹크롤링-selenium , beautifulSoup사용하여 laka홈페이지 프로덕트 크롤링하기(2),크롤링한 데이터 데이터베이스에 넣기

청렴결백한 만능 재주꾼 2020. 6. 1. 00:23
반응형

지난 번에 올린 어마무시하게 무식한 크롤링 방법으로 인해 다음 크롤링들은 비교적 쉬웠다.  HTML의 기본 구조에 따라서 많이 좌우가 되었다. 기본 구조가 균일하냐 안하냐가 컸다.

 

약 550개의 스토어 정보는 백엔드 동료가 했고 나머지 긁어올 데이터들은 내가 했다. 

지난 번에 한 것이 제품의 기본적인 정보들이고, 그 이후 긁어 온 것들은 제품의 이미지 사진 URL, 제품마다 가지고 있는 색깔과 색깔을 나타내는 이미지들을 긁어 왔다. 

 

총 color의 이름과 이미지 Url을 들고온 모습

 

컬러는 웹사이트에서 color +를 클릭해야지 나온다.

컬러 들고 올 때에 클릭한번을 넣어서 포문을 돌렸다. 그거 빼고는 문제가 없었다. 제품 별로 컬러를 묶을 필요가 없었고 그냥 컬러 테이블을 위한 정보가 필요해서 이렇게만 뽑았다.

여기 테이블을 위한 것을 뽑았다. 사실 중요한 것은 크롤링하기전에 무엇 무엇을 할 건지 정하는게 중요하다.

 

 

제품 상세 뷰에서 이미지 한장, 그리고 제품이 다 나열되어 있는 뷰에서 이미지 2장을 뽑아와야하는 작업이 필요했다. 

이 세가지의 필드를 위한 작업이였는데 하나의 csv를 뽑으려고 두 부분을 나뉘어서 코딩을 하였다. 

 

여기 부분이 두장의 url을 찾는 부분
매번 비슷한 방식이지만 제품 url을 다 찾아들어가서 제품 사진을 긁어 오는 것
얻은 결과물

 

 

 

 

 


 

 

 

 

이렇게 얻은 결과물들을 이제 파이썬과 장고를 활용하여 Mysql 데이터베이스에 넣어야 한다. 긁어올 때는 신나지만 또 어떻게 넣느냐를 생각하면 머리가 아픈데 정보가 정리만 잘 되어있으면 쉽게 넣을 수 있다. 

 

제품 기본정보 넣은 파이썬코드

지난 번에 대량으로 긁어온 정보들을 나뉘어서 한번에 넣었다. 밑이 테이블 구성인데 위의 방법으로 넣었다.

 

 

 

또 !! 한가지의 난관이 더 있었는데 다대다 중간 테이블에 넣는 정보이다. id로만 구성되어 있는 중간테이블에 어떻게 장고와 파이썬을 활용해 넣는가 고민을 했다. 쉽지 않았지만 밑의  csv파일로 처리를 했다. 

제품별 컬러리스트 csv파일

 

 

 

 

for 문을 중첩으로 써서 처리를 했다. 데이터 형식이 하나라도 이상해도 힘들어지는 작업이였다. 

위의 코드는 일단 불러오고  csv.reader로 읽는다. next(data_reader,None) <- 이거는 stackoverflow에서 찾은 필드이름들 무시하는 용이고 , 그 밑의 for 문은 제품 이름과 매치되는 아이디와 컬러 아이디를 매치해서 중간테이블에 다 집어넣게 한 것이다. 이렇게 나의 주말은 끝이 났다. 

반응형