·功能描述:爬取 豆瓣 电影 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)