728x90
반응형

1. 셀레니움을 설치한다.

$ sudo pip3 install selenium

 

2. 라우터에 다음 내용을 추가해준다.

/chwideukapp/views.py

from time import sleep
from rest_framework.views import APIView
from rest_framework.response import Response
from selenium import webdriver

chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument("--single-process")
chrome_options.add_argument("--disable-dev-shm-usage")
path = '/usr/bin/chromedriver'
driver = webdriver.Chrome(path, chrome_options=chrome_options)


class ChwideukRouter(APIView):
    def get(self, request):
        return Response({'success': True})

    def post(self, request):
        driver.get("https://typo.tistory.com/")

        print("+" * 100)
        print(driver.title)   # 크롤링한 페이지의 title 정보
        print(driver.current_url)  # 현재 크롤링된 페이지의 url
        print("-" * 100)

        title = driver.title
        url = driver.current_url

        driver.close()
        return Response({'title': title, 'url': url})

 

옵션을 추가한 이유는 아래와 같은 에러가 떠서 그렇습니다.

unknown error: DevToolsActivePort file doesn't exist

 

3. 서버를 실행하고 postman으로 요청을 보내보자.

postman

 

역시 개발이란 코딩도 힘든데 환경 세팅하는게 더 힘들다.. 수많은 삽질을 한 결과 드디어 기본 틀을 작성하게 되었다.

이 뒤부턴 driver로 원하는 페이지로 이동해서 원하는 데이터를 수집하는게 끝이라 여기서 django rest framework 기초 프로젝트는 종료하겠다. 아래는 selenium 사용에 있어 필요한 메소드를 잘 정리해놓은 블로그이다.

 

https://pythondocs.net/selenium/%EC%85%80%EB%A0%88%EB%8B%88%EC%9B%80-%ED%81%AC%EB%A1%A4%EB%9F%AC-%EA%B8%B0%EB%B3%B8-%EC%82%AC%EC%9A%A9%EB%B2%95/

 

셀레니움 크롤러 기본 사용법 - 뻥뚫리는 파이썬 코드 모음

셀레니움 전반에 관하여 간략하게 정리한다. 이 문서는 셀레니움 버전 3 기준이다. 최근 4버전이 출시되었으나 사용방법이 약간 다르니 이 부분을 확인하길 바란다. 사용 방법이나 예시는 따로

pythondocs.net

 

 

728x90
반응형

+ Recent posts