728x90
반응형

리눅스 서버로 실행할 때는 로컬에 vscode를 설치한 후 원격으로 접속해서 연결했지만 윈도우 서버에서는 인스턴스 안에 직접 vscode 를 설치하고 실행하였기에 포트포워딩을 로컬호스트로 해주지 않는다.

 

이를 위해서 ( 외부에서 접속하기 위해서 ) 해야될 것이 2가지 있는데,

 

1. 하나는 이미 해두었던 settings.py 파일에 아래 구문을 추가하는 것.

ALLOWED_HOSTS = ['*']

 

이 구문을 추가해주면 123.45.67.89:8000/ 이런식으로 외부에서 접속이 가능하다. 물론 나중에는 수정해야겠지만 지금은 테스트니까

 

2. 윈도우 서버에서는 방화벽을 따로 설정해주어야 한다. 탐색기에서 firewall을 검색하고 Windows Defender FireWall에 들어간다.

 

 

3. 인바운드에 기존에 있던 80에 관련된 규칙들에 Enabled를 활성화해주고 8000번 포트( django )를 열어준다. 

 

 

이 준비까지 다 되었으면 내 컴퓨터 로컬호스트에서 인터넷이나 postman 으로 응답을 확인할 수 있다.

 

4. 이제 셀레니움을 설치해서 사용해보자.

$ pip install selenium

 

5. 라우터에 다음 내용을 추가해준다. 여기서 chromedriver 는 전 포스트에서 설치했던 실행 파일의 위치이다.

/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 = "C:\\Users\\Administrator\\Downloads\\chromedriver_win32\\chromedriver.exe"
driver = webdriver.Chrome(path, chrome_options=chrome_options)


class ChwideukRouter(APIView):
    def get(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})

    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})

 

6. 서버를 키고 postman으로 요청을 보내보자.

$ python mnage.py runserver 0.0.0.0:8000

정상적으로 뜨는 것을 확인할 수 있다.

728x90
반응형
728x90
반응형

전 포스트에서 프로젝트까지 만들었었다.

 

1. settings.py 파일에 rest_framework 를 추가해준다.

ALLOWED_HOSTS = ['*']

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'rest_framework'
]

 

2. 새 마이그레이션을 생성하고 슈퍼유저를 생성해준다.

$ python manage.py makemigrations
$ python manage.py migrate
$ python manage.py createsuperuser

 

3. 앱을 하나 만들어준다. ( 이름은 상관없습니다. )

$ python manage.py startapp chwideukapp

 

4. apiServer 폴더 안 settings.py 에 만든 앱을 추가해준다.

/apiServer/settings.py

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'rest_framework',
    'chwideukapp'
]

 

5. 새로 만든 앱의 models.py 파일을 수정해준다.

/chwideukapp/models.py

from django.db import models


class ChwideukModel(models.Model):
    title = models.CharField(max_length=70, default='')
    created_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.title

 

6. 새 마이그레이션을 생성한다.

$ python manage.py makemigrations
$ python manage.py migrate

 

7. serializers.py 파일을 만든다.

/chwideukapp/serializers.py

from rest_framework import serializers
from .models import ChwideukModel


class ChwideukSerializer(serializers.ModelSerializer):
    class Meta:
        model = ChwideukModel
        fields = ['title']

 

8. views.py 파일을 수정해준다. 

from rest_framework.views import APIView
from rest_framework.response import Response


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

    def post(self, request):
        return Response({'success': False})

 

9. apiServer 폴더의 urls.py에 방금 만든 라우터를 추가해준다.

from django.contrib import admin
from django.urls import include, path

from chwideukapp.views import ChwideukRouter


urlpatterns = [
    path('admin/', admin.site.urls),
    path('api/chwideuk/', ChwideukRouter.as_view())
]

 

728x90
반응형
728x90
반응형

 

1. aws에서 Windows 인스턴스를 만들고 고정 IP를 만들어주어 연결해준다.

 

AWS LightSail(1) - 인스턴스 생성하기

정말 빠르게 AWS LightSail로 인스턴스를 만들어보자. Lightsail에 관하여 https://lightsail.aws.amazon.com/ls/docs/ko_kr/all 1. aws 사이트에 회원가입, 로그인을 하고 Lightsail 서버를 찾아서 들어간다. 2...

typo.tistory.com

 

2. 맥북 환경이면 Microsoft Remote Desktop 앱을 깔아서 아이디와 비밀번호 연결 후 접속해준다.

인스턴스 초기 아이디 비밀번호는 aws 에서 확인하실 수 있습니다.

( aws 에서 RDP로 접속하니 좀 느렸습니다. )

 

3. aws 에서는 윈도우 서버를 만들고 파일을 다운받으려 할 때 에러가 뜬다. 아래처럼 해주자.

  1. EC2 Windows 인스턴스에 연결합니다.
  2. Windows 시작 메뉴를 열고 서버 관리자를 엽니다.
  3. EC2 Windows 인스턴스에서 실행 중인 Windows Server 버전에 대한 지침을 따릅니다.
    Windows Server 2012 R2, Windows Server 2016 또는 Windows Server 2019
    : 탐색 창에서 [Server Manager]를 선택합니다. [로컬 서버]를 선택합니다. [IE 보안 강화 구성]에서 [켜기]를 선택합니다.
    Windows Server 2008 R2: 탐색 창에서 [Server Manager]를 선택합니다. [서버 요약 - 보안 정보] 섹션에서 [IE ESC 구성]을 선택합니다.
  4. [관리자]에 대해 [끄기]를 선택합니다.
    [사용자]에 대해 [끄기]를 선택합니다.
    [확인]을 선택합니다.
  5. 서버 관리자를 닫습니다.

 

Internet Explorer를 사용하여 파일을 다운로드할 수 있도록 EC2 Windows 인스턴스 구성

인터넷에서 Amazon Elastic Compute Cloud(Amazon EC2) Windows 인스턴스에 타사 소프트웨어를 다운로드해야 합니다. Internet Explorer 보안 구성이 내 시도를 차단하고 있습니다. 다운로드를 활성화하려면 어떻

aws.amazon.com

 

4. Chrome 을 다운로드한다.

https://www.google.com/chrome/index.html

 

Chrome 웹브라우저

더욱 스마트해진 Google로 더 간편하고 안전하고 빠르게.

www.google.com

 

5. 아래 사진처럼 크롬 버전을 익혀둔다.

6. 크롬 버전을 확인했으면 앞자리 수에 맞는 크롬 드라이버를 설치한다.

 

ChromeDriver - WebDriver for Chrome - Downloads

Current Releases If you are using Chrome version 104, please download ChromeDriver 104.0.5112.29 If you are using Chrome version 103, please download ChromeDriver 103.0.5060.53 If you are using Chrome version 102, please download ChromeDriver 102.0.5005.61

chromedriver.chromium.org

 

7. 윈도우로 설치해준다. ( 버전은 다를 수 있습니다. )

 

8. 압축을 해제한 후 해당 파일 경로를 알아둔다. ( 나중에 셀레니움에서 사용 )

 

9. 개발환경을 위해 Vscode와 파이썬을 설치해준다.

 

 

Visual Studio Code - Code Editing. Redefined

Visual Studio Code is a code editor redefined and optimized for building and debugging modern web and cloud applications.  Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows.

code.visualstudio.com

 

 

Download Python

The official home of the Python Programming Language

www.python.org

 

파이썬을 설치할 때 환경변수를 지정해두면 좋다.

 

10. 작업하길 원하는 위치에 폴더를 만들고 가상환경을 만들어준다.

$ python -m venv example

 

11. django와 djangorestframework를 설치해준다.

$ pip install django
$ pip install djangorestframework markdown
$ django-admin startproject apiServer

 

12. VSCode 에서 보면 파일 구조는 이럴 것이다.

 

 

 

참고로 아래 확장 설치하시면 편합니다 

728x90
반응형
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
반응형
728x90
반응형

1. 프로젝트를 만든다.

$ django-admin startproject apiServer

 

2. settings.py 파일에 rest_framework 를 추가해준다.

settings.py

ALLOWED_HOSTS = ['*']

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'rest_framework',
]

 

3. 새 마이그레이션을 생성하고 슈퍼유저를 생성해준다.

$ python3 manage.py makemigrations
$ python3 manage.py migrate
$ python3 manage.py createsuperuser

 

4. 앱을 하나 만들어준다. ( 이름은 상관없습니다. )

$ python3 manage.py startapp chwideukapp

 

5. apiServer 폴더 안 settings.py 에 만든 앱을 추가해준다.

/apiServer/settings.py

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'rest_framework',
    'chwideukapp'
]

 

6. 새로 만든 앱의 models.py 파일을 수정해준다.

 

/chwideukapp/models.py

from django.db import models


class ChwideukModel(models.Model):
    title = models.CharField(max_length=70, default='')
    created_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.title

 

7. 새 마이그레이션을 생성한다.

$ python3 manage.py makemigrations
$ python3 manage.py migrate

 

8. serializers.py 파일을 만든다.

/chwideukapp/serializers.py

from rest_framework import serializers
from .models import ChwideukModel


class ChwideukSerializer(serializers.ModelSerializer):
    class Meta:
        model = ChwideukModel
        fields = ['title']

 

9. views.py 파일을 수정해준다. 

from rest_framework.views import APIView
from rest_framework.response import Response


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

    def post(self, request):
        return Response({'success': False})

 

10. apiServer 폴더의 urls.py에 방금 만든 라우터를 추가해준다.

from django.contrib import admin
from django.urls import include, path

from chwideukapp.views import ChwideukRouter


urlpatterns = [
    path('admin/', admin.site.urls),
    path('api/chwideuk/', ChwideukRouter.as_view())
]

 

11. 서버를 시작하고 postman으로 실험해보았다. ( 서버 포트는 8000, 로컬 포트는 8001 입니다 )

 

이제 API 서버와 라우터는 만들었으니 다음 포스트에서는 Selenium을 사용해보겠다.

728x90
반응형
728x90
반응형

웹 크롤러의 종류는 많다고 한다. 나는 그 중 동적 클롤러인 Selenium을 택했다.

정적 크롤링은 말 그대로 정적인 페이지에서 사용 가능하며 동적 크롤링은 로그인 등 동적으로 데이터가 바뀌는 사이트에 적합하다.

 

전 포스트에서 REST API 를 만들 땐 맥북에 파이참으로 만들었지만 이번엔 AWS에 서버를 만들고 VSCode 로 원격접속해서 

다시 처음부터 만들어보기로 했다.

 

아래는 무료 서버를 진짜 빠르고 간단하게 만드는 방법 

 

AWS LightSail(1) - 인스턴스 생성하기

정말 빠르게 AWS LightSail로 인스턴스를 만들어보자. Lightsail에 관하여 https://lightsail.aws.amazon.com/ls/docs/ko_kr/all 1. aws 사이트에 회원가입, 로그인을 하고 Lightsail 서버를 찾아서 들어간다. 2...

typo.tistory.com

 

Selenium은 크롬 브라우저 기반으로 실행되기 때문에 크롬과 크롬 드라이버가 필요하다. 

1. 필요한 패키지를 설치한다.

$ sudo apt-get update
$ sudo apt-get install -y unzip xvfb libxi6 libgconf-2-4

 

자바를 8버전 이상으로 설치한다.

$ sudo apt-get install default-jdk

 

2. 크롬을 설치한다.

$ sudo curl -sS -o - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add
$ sudo echo "deb [arch=amd64]  http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list
$ sudo apt-get -y update
$ sudo apt-get -y install google-chrome-stable

 

 

3. 내 크롬의 버전을 확인하고 아래 사이트에 들어가서 크롬드라이버의 버전을 확인한다.

$ google-chrome --version

 

 

ChromeDriver - WebDriver for Chrome - Downloads

Current Releases If you are using Chrome version 104, please download ChromeDriver 104.0.5112.20 If you are using Chrome version 103, please download ChromeDriver 103.0.5060.53 If you are using Chrome version 102, please download ChromeDriver 102.0.5005.61

chromedriver.chromium.org

 

4. 맨 앞 숫자가 크롬 버전과 같은지 확인한 후 크롬 드라이버를 설치하고 압축을 해제한다.

$ wget https://chromedriver.storage.googleapis.com/[버전입력]/chromedriver_linux64.zip
$ unzip chromedriver_linux64.zip

 

5. 시스템 구성을 위해 크롬 드라이버를 이동 및 권한을 부여해준다.

$ sudo mv chromedriver /usr/bin/chromedriver
$ sudo chown root:root /usr/bin/chromedriver
$ sudo chmod +x /usr/bin/chromedriver

 

6. Selenium 서버를 설치 후 실행한다.

$ wget https://selenium-release.storage.googleapis.com/3.141/selenium-server-standalone-3.141.0.jar
$ xvfb-run java -Dwebdriver.chrome.driver=/usr/bin/chromedriver -jar selenium-server-standalone-3.141.0.jar

 

7. 파이썬을 설치한다. 

$ sudo apt-get install python3

 

8. 파이썬 가상환경을 위해 패키지를 설치 후 가상환경을 만들어준다.

$ apt-get install python3-venv
$ python3 -m venv example

 

9. 장고와 djangorestframework를 설치한다.

$ apt install python3-pip
$ pip3 install django
$ pip3 install djangorestframework markdown

 

 

728x90
반응형
728x90
반응형

파이썬 웹 크롤러가 종류가 많다고 한다. 나는 그 중에 Scrapy를 선택했다.

자세한 내용은 아래 사이트에 들어가보면 볼 수 있다.

 

https://docs.scrapy.org/en/latest/#

 

Scrapy 2.6 documentation — Scrapy 2.6.1 documentation

© Copyright 2008–2022, Scrapy developers. Revision 23537a0f. Last updated on May 26, 2022.

docs.scrapy.org

 

1. 먼저 scrapy 를 설치한다.

$ pip install scrapy

 

2. 스크래피 프로젝트를 생성한다.

$ scrapy startproject scrapy_project

 

3. spiders 폴더 안에 파이썬 파일을 만들어준다.

scrapy_project/scrapy_project/spiders/example.py

import scrapy

class ExampleSpider(scrapy.Spider):
    name = 'example'
    start_urls = [
        'http://www.example.com/'
    ]

    def parse(self, response):
        url = response.url
        title = response.css('h1::text').get()
        print(f'URL is: {url}')
        print(f'Title is: {title}')

 

4. spider 폴더 경로로 이동하여 아래 명령어를 실행해보자.

$ scrapy runspider example.py

 

5. 결과를 확인한다.

 

6. 추가로 settings.py 파일에 아래 내용을 추가하면 좋다.

CONCURRENT_REQUESTS = 1    
DOWNLOAD_DELAY = 0.25  # 250ms 기다림 
HTTPCACHE_ENABLED = True  # cache 기능 사용
728x90
반응형
728x90
반응형

이번엔 우리가 새로운 라우터를 만들어보자. 아래 명령어 한 줄로 손쉽게 앱을 하나 만들 수 있다.

$ python manage.py startapp api_server

 

 

1. 먼저 Model을 수정해준다.

/api_server/models.py

from django.db import models


class APIServer(models.Model):
    title = models.CharField(max_length=70, default='')
    link = models.URLField()
    created_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.title

 

2 pythonProject 폴더 안 settings.py에 api_server 앱을 추가해준다.

/pythonProject/settings.py

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'rest_framework',
    'api_server'
]

 

3. 새 마이그레이션을 생성한다.

$ python manage.py makemigrations
$ python manage.py migrate

 

4. Serializer 세팅을 위해 아래와같이 파일을 만든다.

/api_server/serializer.py

from rest_framework import serializers
from .models import APIServer


class APIServerSerializer(serializers.ModelSerializer):
    class Meta:
        model = APIServer
        fields = ['title']
Serializer 는 queryset 과 model instance 같은 것들을 쉽게  JSON 또는 XML 의 데이터 형태로 렌더링 할 수 있게 해줍니다. 우리는 APIServer 모델을 serialize 해줘야 하기 때문에 ModelSerializer를 사용합니다.

 

5. views 파일을 수정해준다.

/api_server/views.py

from rest_framework import viewsets
from .serializers import APIServerSerializer
from .models import APIServer


class APIServerRouter(viewsets.ModelViewSet):
    queryset = APIServer.objects.all()
    serializer_class = APIServerSerializer

 

rest_framework 의 viewset 을 사용하면 CRUD 로직을 짜지 않아도 사용 가능하게 해준다.

 

6. pythonProject 폴더의 urls.py 파일을 수정해준다.

/pythonProject/urls.py

from django.contrib import admin
from django.urls import path, include
from rest_framework import routers
from api_server.views import APIServerRouter

router = routers.DefaultRouter()
router.register('apiserver', APIServerRouter)

urlpatterns = [
    path('admin/', admin.site.urls),

    path('', include(router.urls)),

    path('api-auth/', include('rest_framework.urls'))
]

 

7. 서버를 시작해 8000번 포트를 켜보자.

 

8. /apiserver 경로로 들어가보면 GET 과 POST 메소드를 GUI로 사용할 수 있다.

(GET, POST, GET/[id], PUT/[id], DELETE/[id])

728x90
반응형
728x90
반응형

자세한 내용은 아래 사이트에서 확인할 수 있다.

https://www.django-rest-framework.org/

 

Home - Django REST framework

 

www.django-rest-framework.org

 

1. 필요한 패키지를 설치한다.

$ pip install djangorestframework markdown

 

2. settings.py 파일과 urls.py 파일을 수정해준다.

settings.py

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'rest_framework',
]

 

urls.py

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),

    path('api-auth/', include('rest_framework.urls'))
]

 

3. 다시 파이썬을 실행해주고 아래 주소로 가보자.

 

/api-auth/ 로 가보면 djangorestframework 에서 지원해주는 login, logout 기능이 있다는 것을 확인할 수 있다.

이번엔 login 경로까지 가보자.

 

 

이렇게 화면이 뜨는 것을 볼 수 있다.

 

/admin 경로로 들어가면 아래와 같은 화면이 뜨는 것도 볼 수 있는데

아래 명령어로 슈퍼유저를 생성 후 비밀번호를 설정 한 후에 들어갈 수 있다.

$ python manage.py createsuperuser

 

혹시나 비밀번호를 잊어버린 경우 비밀번호를 초기화 해주자

$ python manage.py cangepassword admin

 

다시 admin으로 들어가서 로그인을 해보면

이렇게 성공적으로 로그인된 화면을 볼 수 있다.

728x90
반응형
728x90
반응형

웹 스크래핑 전용 api 서버를 만들고 싶어졌다.

자바스크립트보다는 파이썬이 웹 스크래핑에 유용하다 하여 Django 서버를 만들게 되었다.

 

웹 크롤링과 웹 스크래핑의 차이점은?
웹 크롤링과 웹 스크래핑은 모두 정보를 추출해온다는 데서는 공통점을 지닙니다.
하지만 '타켓 웹 페이지의 유무'와 '중복 제거(deduplication)의 실행 여부'에서 차이가 납니다.
웹 크롤링은 특정 웹 페이지를 목표로 하지 않습니다. 일단 탐색부터 하고, 정보를 가져오죠. '선탐색 후추출'입니다. 반면 웹 스크래핑을 할 때는 목표로 하는 특정 웹페이지가 있습니다.우리가 원하는 정보를 어디서 가져올지 타겟이 분명하고, 그 타겟에서 정보를 가져오죠. 그래서 '선결정 후추출'입니다.
또, 웹 크롤링에서는 중복 제거가 필수적입니다. 중복되거나 불필요한 정보를 가져와서 분류를 더 어렵게 할 필요는 없으니까요. 도서관의 책이 개별적으로 구분되는 색인이 있는 것처럼 웹 크롤링도 수집한 웹 페이지가 중복되지 않도록 서로 다른 색인을 남깁니다. 그래서 웹 크롤링을 웹 인덱싱(web indexing)이라고도 부릅니다.
반면 웹 스크래핑에서는 중복 제거가 필수는 아닙니다. 중복된 정보를 가지고 있을 필요는 없지만, 그렇다고 꼭 필수적으로 하는 일도 아니죠.

 

1. 파이썬을 설치한다.

https://www.python.org/downloads/ 

 

Download Python

The official home of the Python Programming Language

www.python.org

 

2. 파이썬 개발 환경을 위해 파이참을 설치한다.

https://www.jetbrains.com/ko-kr/pycharm/download/#section=mac

 

다운로드 PyCharm: JetBrains가 만든 전문 개발자용 Python IDE

 

www.jetbrains.com

 

3. 파이참에 New Project 를 클릭해서 프로젝트를 만들어준다.

 

4. 터미널에서 django를 설치한다.

$ pip install django

 

5. django-admin 명령어로 django 프로젝트를 만들어준다.

$ django-admin startproject apiServer .

 

6. 아래 명령어로 서버를 실행해본다.

$ python manage.py runserver

 

8000 포트에 서버가 작동하고 있는 것을 확인할 수 있다. 아래 url을 눌러보면

 

 

이렇게 잘 뜨는 것을 확인할 수 있다.

728x90
반응형

+ Recent posts