·功能描述:爬取 豆瓣 電影 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 --備注:需在項目檔案夾中運作