天天看點

Scrapy爬蟲架構(二):導出爬取結果

·功能描述:爬取 豆瓣 電影 TOP-250,爬取内容(電影标題,評分人數,評分)

·編輯 items.py 檔案

# -*- coding: utf-8 -*-

import scrapy

class DoubanMovieItem(scrapy.Item):
    # 排名
    ranking = scrapy.Field()
    # 電影名稱
    titles = scrapy.Field()
    # 評分
    scores = scrapy.Field()
    # 評論人數
    persons= scrapy.Field()
           

·編輯  檔案夾spiders/ 下的 爬蟲檔案

from scrapy.spiders import Spider
from scrapy import Request
from Scrapy_one.items import DoubanMovieItem

#功能描述:爬取 豆瓣 電影 TOP-250,爬取内容(電影标題,評分人數,評分)

class BlogSpider(Spider):

    #爬蟲名稱,隻有一個
    name = 'douban_Top-250'

    #僞裝浏覽器
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36',
    }

    #設定目标位址,并調用headers
    def start_requests(self):
        url = 'https://movie.douban.com/top250'
        yield Request(url, headers=self.headers)

    #根據源碼 選擇 爬取内容
    def parse(self, response):

        item = DoubanMovieItem()
        movies = response.xpath('//ol[@class="grid_view"]/li')#選擇 内容段

        for movie in movies:#從内容段 拆分 内容
            #備注:記得使用相對路徑 “.//”
            item['ranking'] = movie.xpath('.//div[@class="pic"]/em/text()').extract()#排名
            item['titles'] = movie.xpath('.//div[@class="hd"]/a/span[1]/text()').extract()#标題
            item['persons'] = movie.xpath('.//div[@class="star"]/span[4]/text()').extract()#評分人數
            item['scores'] = movie.xpath('.//div[@class="star"]/span[@class="rating_num"]/text()').extract()#評分
            yield item

        next_url = response.xpath('//span[@class="next"]/a/@href').extract()#跳轉下一頁的連結
        if next_url:#判斷是否有下一頁,如果有則跳轉下一頁的連結
            next_url = 'https://movie.douban.com/top250' + next_url[0]
            yield Request(next_url, headers=self.headers)
           

·導出csv:scrapy crawl douban_Top-250 -o douban1-Top250.csv --備注:需在項目檔案夾中運作