>백엔드 개발 >파이썬 튜토리얼 >Scrapy 크롤러 작동 중: Maoyan 영화 순위 데이터 크롤링

Scrapy 크롤러 작동 중: Maoyan 영화 순위 데이터 크롤링

WBOY
WBOY원래의
2023-06-22 08:58:552246검색

스크래피 크롤러 연습: 마오옌 영화 순위 데이터 크롤링

인터넷의 발달과 함께 데이터 크롤링은 빅데이터 시대의 중요한 부분이 되었습니다. 데이터 크롤링 과정에서 크롤러 기술을 활용해 순간적으로 필요한 데이터를 자동으로 획득해 가공, 분석할 수 있다. 최근 몇 년 동안 Python은 가장 인기 있는 프로그래밍 언어 중 하나가 되었습니다. 그중 Scrapy는 Python을 기반으로 한 강력한 크롤러 프레임워크로 광범위한 응용 프로그램을 보유하고 있으며 특히 데이터 크롤링 분야에서 모든 사람의 관심을 끌고 있습니다.

이 기사는 Maoyan 영화 순위 데이터를 크롤링하기 위한 Scrapy 프레임워크를 기반으로 하며 구체적인 프로세스는 페이지 구조 분석, 크롤러 프레임워크 작성, 페이지 구문 분석 및 데이터 저장의 네 부분으로 나뉩니다.

1. 페이지 구조 분석

먼저 마오얀 영화 순위 페이지의 구조를 분석해야 합니다. 작업의 편의를 위해 페이지 분석에는 Google Chrome 브라우저를 사용하고, 필요한 정보 추출에는 XPath를 사용합니다.

보시다시피 Maoyan 영화 순위 페이지에는 여러 영화에 대한 정보가 포함되어 있으며 각 영화에는 아래 그림과 유사한 HTML 코드 블록이 있습니다.

우리의 목표는 각 HTML 코드 블록에서 영화 이름, 주연 역할, 개봉 시간, 영화 포스터 링크 및 등급의 5가지 데이터를 얻는 것입니다. 그런 다음 F12 키를 눌러 Google Chrome 브라우저에서 개발자 도구를 연 다음 "요소" 탭을 선택하고 추출해야 하는 대상 요소로 마우스를 이동한 다음 마우스 오른쪽 버튼을 클릭하고 "복사 -> XPath 복사를 선택합니다. " .

복사된 XPath 경로는 다음과 같습니다:

/html/body/div[3]/div/div[2]/dl/dd[1]/div/div/div[1]/p[1]/ a /text()

여기서 "/html/body/div[3]/div/div[2]/dl/dd"는 전체 영화 목록의 상위 노드를 나타냅니다. 순서대로 아래로 내려가면 요소를 찾을 수 있습니다. 추출해야합니다.

2. 크롤러 프레임워크 작성

다음으로 Scrapy 프로젝트를 만들어야 합니다. Scrapy 공식 문서(https://docs.scrapy.org/en/latest/intro/tutorial.html)를 참조하세요. 프로젝트를 생성한 후 Spiders 디렉터리에 maoyan.py라는 새 파일을 생성합니다.

다음은 크롤러 프레임워크 코드입니다.

import scrapy
from maoyan.items import MaoyanItem

class MaoyanSpider(scrapy.Spider):

name = 'maoyan'
allowed_domains = ['maoyan.com']
start_urls = ['http://maoyan.com/board/4']

def parse(self, response):
    movies = response.xpath('//dl[@class="board-wrapper"]/dd')
    for movie in movies:
        item = MaoyanItem()
        item['title'] = movie.xpath('.//p[@class="name"]/a/@title').extract_first()
        item['actors'] = movie.xpath('.//p[@class="star"]/text()').extract_first().strip()
        item['release_date'] = movie.xpath('.//p[@class="releasetime"]/text()').extract_first().strip()
        item['image_url'] = movie.xpath('.//img/@data-src').extract_first()
        item['score'] = movie.xpath('.//p[@class="score"]/i[@class="integer"]/text()').extract_first() + 
                        movie.xpath('.//p[@class="score"]/i[@class="fraction"]/text()').extract_first()
        yield item

코드에서 먼저 Spider의 이름, allowed_domains 및 start_urls를 정의합니다. 그 중 "allowed_domains"는 해당 도메인 이름에 속한 URL만 크롤러가 접근하여 추출한다는 의미입니다. 동시에 "start_urls"는 크롤러가 요청할 첫 번째 URL 주소를 나타냅니다.

Spider의 구문 분석 방법은 응답에서 콘텐츠를 받은 후 XPath 경로를 통해 각 영화 이름, 주연 역할, 개봉 시간, 영화 포스터 링크, 등급의 5개 데이터 항목을 추출하여 MaoyanItem에 저장합니다.

마지막으로 Yield 키워드를 통해 각 Item 객체를 반환했습니다. 참고: 우리가 정의한 Item 개체는 items.py라는 파일에 있으며 가져와야 합니다.

3. 페이지 구문 분석

크롤러가 크롤링해야 하는 페이지를 찾으면 HTML 문서 구문 분석을 시작하고 필요한 정보를 추출할 수 있습니다. 콘텐츠의 이 부분은 주로 XPath 쿼리와 Scrapy의 응답 개체에 대한 정규식 처리에 중점을 둡니다.

이 예에서는 XPath 경로를 사용하여 Maoyan 영화 순위 페이지의 각 영화에 대해 5개의 데이터를 추출합니다.

4. 데이터 저장

데이터가 파싱된 후에는 저장해야 합니다. 일반적으로 획득한 데이터를 파일에 저장하거나 데이터베이스에 저장합니다.

이 예에서는 데이터를 .csv 파일에 저장하도록 선택합니다.

import csv

class MaoyanPipeline(object):

def __init__(self):
    self.file = open('maoyan_top100_movies.csv', 'w', newline='', encoding='utf-8')
    self.writer = csv.writer(self.file)

def process_item(self, item, spider):
    row = [item['title'], item['actors'], item['release_date'], item['image_url'], item['score']]
    self.writer.writerow(row)
    return item

def close_spider(self, spider):
    self.file.close()

위 코드에서는 Python 내부의 csv 모듈을 사용하여 데이터 쓰기를 가져옵니다. maoyan_top100_movies.csv라는 파일로 저장됩니다. 스파이더가 닫히면 csv 파일도 닫힙니다.

요약

이 기사를 통해 우리는 Scrapy 프레임워크를 사용하여 Maoyan 영화 순위 데이터를 크롤링하는 방법을 배웠습니다. 먼저 페이지 구조를 분석한 다음 데이터를 크롤링하고 페이지를 구문 분석하고 데이터를 저장하는 Scrapy 프레임워크를 작성했습니다. 실제 전투에서는 데이터 캡처의 적법성, 유용성 및 효율성을 통합하는 방법을 배울 수 있습니다.

위 내용은 Scrapy 크롤러 작동 중: Maoyan 영화 순위 데이터 크롤링의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.