최고의 영화 및 쇼를 위한 웹 스크래핑 IMDB

게시 됨: 2020-12-08
목차
IMDB 데이터의 웹 스크래핑은 어떻게 이루어집니까?
우리가 추출한 데이터 포인트
제약 조건 및 모범 사례

역대 최고의 영화 250편이 무엇인지 알고 싶습니까? 아니면 지금까지 작은 스크린을 강타한 최고의 코미디 쇼? 영화와 쇼의 세계와 관련된 이러한 모든 답변, 리뷰, 평가 및 퀴즈에 대해 전 세계 사람들은 이러한 정보의 온라인 데이터베이스인 IMDB를 사용합니다. 정보는 팬에 의해 업데이트되지만 데이터베이스 자체는 Amazon의 자회사가 소유하고 운영합니다. 1990년에 데이터베이스로 처음 만들어졌고 1993년에 웹으로 옮겨졌습니다. 웹사이트의 정보는 누구나 액세스할 수 있지만 사실을 수정하거나 리뷰를 추가하려면 등록이 필수입니다. 이 블로그에서는 Python을 사용하여 IMDB 데이터를 웹 스크래핑하는 방법을 살펴봅니다.

영화와 작은 스크린 쇼 모두에 대해 업데이트되는 다양한 데이터 포인트 외에도 IMDB는 사용자가 등급을 추가할 수 있도록 허용하며 이러한 등급은 영화 애호가 및 기타 사람들이 시청 목록을 만드는 데 사용하는 여러 목록의 기초를 형성했습니다. IMDB는 데이터를 쿼리하는 API를 제공하지 않지만 텍스트 형식으로 데이터를 다운로드할 수 있습니다. DIY 코드를 사용하여 데이터를 스크랩할 수도 있습니다.

IMDB 데이터의 웹 스크래핑은 어떻게 이루어집니까?

IMDB에서 2세트의 데이터를 스크랩할 것입니다.

ㅏ). IMDB 상위 250개 영화

비). IMDB 상위 250개 TV 프로그램

우리는 이 목록에 있는 각 영화 또는 프로그램에 대한 특정 데이터 포인트를 스크랩할 것입니다. 한 번에 모든 데이터를 스크랩하고 싶지 않을 수 있으므로 상위 n개 결과만 추출하도록 매개변수 값을 변경하는 옵션을 제공했습니다.

시작하기 전에 BeautifulSoup 종속성과 텍스트 편집기와 함께 Python3.7 이상이 필요합니다. 그런 다음 python 명령 자체를 사용하여 아래에 제공된 코드를 실행할 수 있습니다. 앞서 코드에서 언급한 두 목록의 링크를 하드코딩했기 때문에 사용자 입력이 필요하지 않습니다.

코드에는 3가지 특정 기능이 있습니다.

ㅏ). get_top_rated_imdb_hits- 실행이 시작되는 곳입니다. 이 함수에 대한 입력으로 관련 목록의 URL을 전달합니다. 영화 목록 URL 또는 TV 프로그램 목록 URL일 수 있습니다. 또한 결과 JSON을 원하는 파일의 이름과 원하는 상위 결과의 수를 전달합니다. 웹 페이지 자체에서 사용할 수 있는 영화 이름 및 등급과 같은 특정 데이터 요소를 가져온 다음 추가 데이터 요소를 가져오기 위해 영화/쇼 특정 URL을 우회하는 get_extra_details 함수를 호출합니다.

비). get_web_page_content- 이 함수는 전달된 URL의 HTML 콘텐츠를 가져와 쉽게 구문 분석할 수 있는 BeautifulSoup 개체로 변환하는 데 사용됩니다. 이 객체는 이 함수가 반환하는 것입니다.

씨). get_extra_details- 이 함수는 get_top_rated_imdb_hits 함수에 의해 전달된 영화 또는 쇼 특정 URL을 사용하여 랭킹 목록 웹페이지에서 볼 수 없는 요약, 최고 스타의 이름 및 감독 정보와 같은 자세한 정보를 가져옵니다.

IMDB의 웹 스크래핑

IMDB의 웹 스크래핑

보시다시피 get_top_rated_imdb_hits 함수를 두 번 호출했습니다. 한 번은 영화 URL로, 한 번은 TV 프로그램 URL로 호출했습니다. 또한 두 목록의 상위 두 후보에 대한 데이터만 원하기 때문에 개수를 2로 전달했습니다. 이 코드가 실행되면 디렉토리에 "movies.json" 및 "tv_shows.json"이라는 두 개의 파일이 생성된 것을 볼 수 있습니다.

우리가 추출한 데이터 포인트

각 영화 또는 TV 프로그램에 대해 이러한 데이터 포인트를 추출했습니다.

ㅏ). 특정 쇼/영화에 대한 IMDB 링크

비). 계급

씨). 이름

디). 년도

이자형). 등급

에프). 요약

g). 감독

시간). 작가

나).

한 가지 유의할 점은 각 영화 또는 프로그램에 대해 모든 데이터 포인트를 사용할 수 있는 것은 아니지만 사용 가능한 데이터 포인트는 스크랩된다는 것입니다. 아래 JSON은 위의 코드를 실행하여 얻은 IMDB의 상위 250개 영화 목록에서 상위 2개 영화를 보여줍니다.

IMDB의 웹 스크래핑

데이터

데이터를 있는 그대로 스크랩하고 데이터 자체를 최소한으로 변경했습니다. 데이터 포인트를 더 유용하게 만들기 위해 데이터를 더 정리할 수 있습니다. 몇 가지 예는 다음과 같습니다.

ㅏ). 연도에 브래킷을 제거합니다.

비). 등급을 2개의 개별 데이터 포인트, 등급 및 등급을 제출한 사람 수로 나눕니다.

아래 JSON은 두 번째 웹 페이지에서 추출한 상위 2개의 TV 쇼를 보여줍니다. 그러한 웹 스크레이퍼가 많이 있기 때문입니다. 다른 TV 프로그램에 대해 웹사이트에서 IMDB 데이터를 스크랩 하는 방법을 살펴보겠습니다. 아래 코드는 수행 방법에 대한 자세한 설명입니다.

데이터 스크래핑

각 목록에서 2개만 추출했습니다. 250개의 모든 쇼 또는 영화에 대해 코드를 실행하고 방대한 JSON 파일을 생성할 수 있습니다. 추출한 데이터를 데이터베이스에 저장할 수도 있습니다. 그러나 너무 많은 링크에서 코드를 실행하기 위해. IMDB 데이터를 웹 스크래핑하는 동안 몇 가지 모범 사례를 따르고 몇 가지 제약 조건을 염두에 두어야 합니다.

제약 조건 및 모범 사례

이 코드를 실행하고 "nos" 값을 250으로 변경하고 250개의 모든 영화 및 TV 프로그램에서 코드를 실행한 경우. 웹 사이트가 귀하의 IP에서 자동 트래픽을 감지하여 결국 차단될 가능성이 높습니다. IP 순환과 같은 도구를 사용해야 합니다. 각 URL의 HTML 콘텐츠를 스크랩하는 사이에 몇 초의 대기 시간을 만들 수도 있습니다.

당신이 긁는 데이터에 관해서는, 그 콘텐츠의 대부분이 자원 봉사자에 의해 만들어 졌음에도 불구하고. 데이터의 상업적 사용에 특정 제한이 있을 수 있습니다. 다른 웹 페이지에서 스크랩한 데이터를 사용하는 곳마다 규정을 따라야 합니다. 이것이 Python을 사용하여 IMDB 데이터를 웹 스크래핑하는 방법입니다.

그러나 누군가가 데이터를 관리하고 핵심 비즈니스 모델에 집중할 수 있는 번거롭지 않은 웹 스크래핑 경험을 원한다면 PromptCloud 팀이 도와 드립니다. 우리는 모든 것을 처리하는 DaaS 솔루션에 자부심을 느낍니다. 스크랩부터 스크랩한 데이터 액세스까지.

위의 내용이 마음에 드셨다면 이 내용도 꼭 읽어보시기 바랍니다 . 아래 댓글 섹션에 소중한 피드백을 남겨주세요.