Scrapy는 데이터를 빠르고 효율적으로 스크랩하기 위한 오픈 소스 Python 프레임워크입니다. 이 기사에서는 Scrapy를 사용하여 Douban 영화의 데이터를 크롤링하고 인기도를 평가할 것입니다.
먼저 Scrapy를 설치해야 합니다. 명령줄에 다음 명령을 입력하여 Scrapy를 설치할 수 있습니다.
pip install scrapy
다음으로 Scrapy 프로젝트를 생성하겠습니다. 명령줄에 다음 명령을 입력합니다.
scrapy startproject doubanmovie
이렇게 하면 doubanmovie라는 Scrapy 프로젝트가 생성됩니다. 그런 다음 프로젝트 디렉터리로 이동하여 douban.py라는 Spider를 만듭니다. 명령줄에 다음 명령을 입력하세요:
cd doubanmovie scrapy genspider douban douban.com
이제 Spider를 사용할 준비가 되었습니다. 다음으로 필요한 데이터를 얻기 위해 거미의 동작을 정의합니다.
Spider를 사용하여 Douban 영화 데이터를 크롤링하겠습니다. 구체적으로 다음 정보를 얻을 수 있습니다:
오픈두우반 .py 파일에 다음 코드를 추가합니다.
import scrapy class DoubanSpider(scrapy.Spider): name = 'douban' allowed_domains = ['douban.com'] start_urls = ['https://movie.douban.com/top250'] def parse(self, response): movie_list = response.xpath('//div[@class="item"]') for movie in movie_list: yield { 'name': movie.xpath('.//span[@class="title"]/text()').get(), 'director': movie.xpath('.//div[@class="bd"]/p/text()[1]').get(), 'actors': movie.xpath('.//div[@class="bd"]/p/text()[2]').get(), 'genre': movie.xpath('.//div[@class="bd"]/p/text()[3]').get(), 'country': movie.xpath('.//div[@class="bd"]/p/text()[4]').get(), 'language': movie.xpath('.//div[@class="bd"]/p/text()[5]').get(), 'release_date': movie.xpath('.//div[@class="bd"]/p/text()[6]').get(), 'duration': movie.xpath('.//div[@class="bd"]/p/text()[7]').get(), 'rating': movie.xpath('.//span[@class="rating_num"]/text()').get(), 'num_reviews': movie.xpath('.//div[@class="star"]/span[@class="rating_num"]/text()').get(), }
이 코드에서는 XPath를 사용하여 얻어야 하는 정보를 선택합니다. 우리는 Yield를 사용하여 이 정보를 생성하고 이를 사용자에게 반환합니다.
지금 Spider를 실행하면(다음 명령 실행: scrapy Creek douban) 상위 250개 영화에 대한 데이터를 크롤링하여 명령줄로 반환합니다.
이제 상위 250개 영화의 데이터를 성공적으로 가져왔습니다. 다음으로 평점 인기순위를 알아보겠습니다.
Douban 영화 TOP250 목록을 크롤링하려면 먼저 새로운 Spider를 만들어야 합니다. 우리는 이 목록을 사용하여 영화 순위를 얻을 것입니다.
douban.py 파일에 다음 코드를 추가하겠습니다.
import scrapy class DoubanSpider(scrapy.Spider): name = 'douban' allowed_domains = ['douban.com'] start_urls = ['https://movie.douban.com/top250'] def parse(self, response): movie_list = response.xpath('//div[@class="item"]') for movie in movie_list: yield { 'name': movie.xpath('.//span[@class="title"]/text()').get(), 'director': movie.xpath('.//div[@class="bd"]/p/text()[1]').get(), 'actors': movie.xpath('.//div[@class="bd"]/p/text()[2]').get(), 'genre': movie.xpath('.//div[@class="bd"]/p/text()[3]').get(), 'country': movie.xpath('.//div[@class="bd"]/p/text()[4]').get(), 'language': movie.xpath('.//div[@class="bd"]/p/text()[5]').get(), 'release_date': movie.xpath('.//div[@class="bd"]/p/text()[6]').get(), 'duration': movie.xpath('.//div[@class="bd"]/p/text()[7]').get(), 'rating': movie.xpath('.//span[@class="rating_num"]/text()').get(), 'num_reviews': movie.xpath('.//div[@class="star"]/span[@class="rating_num"]/text()').get(), } next_page = response.xpath('//span[@class="next"]/a/@href') if next_page: url = response.urljoin(next_page[0].get()) yield scrapy.Request(url, callback=self.parse)
코드에서는 next_page라는 변수를 사용하여 마지막 페이지에 도달했는지 확인합니다. 아직 마지막 페이지에 도달하지 않은 경우 계속해서 다음 페이지로 크롤링합니다.
다음으로 영화 순위를 얻으려면 구문 분석 방법을 업데이트해야 합니다. Python의 열거 기능을 사용하여 순위를 각 영화와 연결합니다.
douban.py 파일에서 원래 구문 분석 방법을 다음으로 대체합니다.
def parse(self, response): movie_list = response.xpath('//div[@class="item"]') for i, movie in enumerate(movie_list): yield { 'rank': i + 1, 'name': movie.xpath('.//span[@class="title"]/text()').get(), 'director': movie.xpath('.//div[@class="bd"]/p/text()[1]').get(), 'actors': movie.xpath('.//div[@class="bd"]/p/text()[2]').get(), 'genre': movie.xpath('.//div[@class="bd"]/p/text()[3]').get(), 'country': movie.xpath('.//div[@class="bd"]/p/text()[4]').get(), 'language': movie.xpath('.//div[@class="bd"]/p/text()[5]').get(), 'release_date': movie.xpath('.//div[@class="bd"]/p/text()[6]').get(), 'duration': movie.xpath('.//div[@class="bd"]/p/text()[7]').get(), 'rating': movie.xpath('.//span[@class="rating_num"]/text()').get(), 'num_reviews': movie.xpath('.//div[@class="star"]/span[@class="rating_num"]/text()').get(), } next_page = response.xpath('//span[@class="next"]/a/@href') if next_page: url = response.urljoin(next_page[0].get()) yield scrapy.Request(url, callback=self.parse)
이제 Spider를 다시 실행하면 처음 250개 영화에 대한 데이터를 가져와 명령줄에 반환합니다. 이 시점에서 우리는 모든 영화의 순위를 볼 것입니다.
Scrapy는 데이터를 빠르고 효율적으로 스크랩하는 매우 강력하고 유연한 도구입니다. 이 기사에서는 Scrapy를 사용하여 Douban 영화 데이터를 크롤링하고 인기 순위를 평가하는 데 성공했습니다.
Python 코드와 XPath를 사용하여 웹 페이지의 정보를 선택적으로 얻고 Yield 문을 사용하여 이를 사용자에게 반환합니다. 프로세스 전반에 걸쳐 Scrapy는 대량의 데이터를 관리하고 크롤링하는 간단하고 효과적인 방법을 제공하여 데이터 분석 및 처리를 신속하게 수행할 수 있도록 해줍니다.
위 내용은 Scrapy 실행: Douban 영화 데이터 크롤링 및 인기 순위 평가의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!