컬리 프로젝트를 진행하며 상품을 크롤링 하고 있는데, 장고로 테이블을 구성한 서브카테고리 테이블의 id값(foreign key)을 가져와야 했다. 크롤링 파일은 장고 앱으로 만들지 않았기에, 장고에 접근할 수 없는 상황이다.
이럴 경우 일단 크롤링 파일 앞에 이런 코드가 선행되어야 한다.
import os
import django
os.environ.setdefault('DJANGO_SETTINGS_MODULE', '<프로젝트 명>.settings') [1]
django.setup() [2]
[1][2]
그리고 중요한 점은 해당 크롤링 파일이 manage.py가 있는 위치에 같이 있어야한다. (이걸 몰라서 꼬박 이틀을 헤맸다)
이렇게 하면 크롤링 파일이 장고에 접근, 장고로 만든 테이블의 데이터베이스에 접근해 데이터를 가져올 수 있다.
크롤링 파일 :
import os
import django
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'WeketKurly_backend.settings')
django.setup()
for product in products
product_num = product['no']
url = f'https://api.kurly.com/v3/home/products/{product_num}?&ver=1585655639453'
det_url = requests.get(url).json()
det_url = det_url['data']
sub_category_id = SubCategory.objects.get(name = sub).id
sub_category_ids.append(sub_category_id)