2017-11-21 1 views
0

임 장고에 대한 새로운 내용입니다. 나는 튜토리얼을 훑어보고 내 자신의 무언가를 시작하기로 결정했고, 최선의 방법에 대해 약간의 조언이 필요하다.django 데이터베이스를 사용하여 BeautifulSoup을 업데이트하십시오.

postgreSQL 테이블에 저장된 작은 URL 목록을 통해 실행되는 간단한 사이트를 만들고 Beautiful Soup을 사용하여 각 URL 페이지에서 데이터를 추출하고이를 레코드와 비교하여 저장합니다.

필자는 모델과 관련 클래스 listview를 설정하여 모두 표시합니다. 아름다운 스프 부분을 실행하기 시작하고 각 사이트의 데이터를 물리적으로 실행하여 "긁어 모으는"코드를 어디에 두어야하는지 궁금하십니까?

클래스 뷰를 호출 할 때 호출해야 할 항목은 무엇입니까? 어떤 종류의 모델 매니저? 그냥 별주 기능이나 뭐? 가능한 경우 간격으로이 데이터를 업데이트하기 위해 Ajax를 사용하고 싶습니다.

너무 막연하지 않기를 바랍니다. 글자 그대로 단순한 모델이나 클래스 ListView 임에도 불구하고 유익하다는 생각이 들게되면 기쁘게 생각합니다.

감사합니다.

답변

2

보기에서 스크래핑을해서는 안됩니다. 스크래핑이 진행되는 동안 페이지가로드되지 않으므로 사용자를 혼동시킬 수 있습니다. 사용자가 페이지를 새로 고치고 코드가 두 번 실행될 수도 있습니다. 또한 프로젝트에 설치할 수있는 많은 프록시에는 시간 초과가있을 수 있습니다.

이것은 백그라운드 프로세스 유형의 작업입니다. 가장 쉬운 방법은 custom admin command입니다. management/commands 아래에 scrape.py이라는 파일을 만듭니다. __init__.py을 잊지 마세요.

polls/ 
    __init__.py 
    models.py 
    management/ 
     __init__.py 
     commands/ 
      __init__.py 
      scrape.py 
    tests.py 
    views.py 

해당 파일 사용에서 : 당신은 아마 그것을 설정할

python manage.py scrape 

:

from django.core.management.base import BaseCommand, CommandError 

class Command(BaseCommand): 
    def handle(self, *args, **options): 
     self.stdout.write(self.style.SUCCESS('I am a scraper!')) 

마지막으로 새로운 명령을 실행하는 것을 잊지 마세요 예를 들어 크론 직업.

더 복잡한 사용 사례는 Celery을 참조하십시오.

+0

완벽한, 시도해보십시오. 빠른 응답 kichik에 감사드립니다. – BegaMucks

관련 문제