Scrapy爬虫 爬取豆瓣TOP250

Posted xingweikun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Scrapy爬虫 爬取豆瓣TOP250相关的知识,希望对你有一定的参考价值。


使用Scrapy爬虫框架爬取豆瓣电影TOP250

分析网页

第一页
start=0

在这里插入图片描述

第二页
start=25

在这里插入图片描述

最后一页
start=225

在这里插入图片描述
可以看出网页的网址是有规律的

创建Scrapy爬虫框架

C:\\Users\\dell>cd Desktop\\python_test\\
C:\\Users\\dell\\Desktop\\python_test>scrapy startproject dbmovie
C:\\Users\\dell\\Desktop\\python_test>cd dbmovie\\dbmovie
C:\\Users\\dell\\Desktop\\python_test\\dbmovie\\dbmovie>scrapy genspider dbmovie_spider movie.douban.com

修改spider脚本

import scrapy
from dbmovie.items import DoubanItem

class DbmovieSpiderSpider(scrapy.Spider):
    name = 'dbmovie_spider'
    allowed_domains = ['movie.douban.com/top250']
    list=[]
    for page in range(0,226,25):
        url='start='+str(page)+'&filter='
        start_urls='https://movie.douban.com/top250?'+url
        list.append(start_urls)
    start_urls = list

    def parse(self, response):
        item=DoubanItem()
        movies=response.xpath('//ol[@class="grid_view"]/li')
        for movie in movies:
            item['ranking']=movie.xpath('.//div[@class="star"]/span[4]/text()').extract()[0]
            item['movie_name']=movie.xpath('.//div[@class="hd"]/a/span[1]/text()').extract()[0]
            item['score']=movie.xpath('.//div[@class="star"]/span[@class="rating_num"]/text()').extract()[0]
            item['describe']=movie.xpath('.//span[@class="inq"]/text()').extract()
            yield item

修改items脚本

# Define here the models for your scraped items
#
# See documentation in:
# https://docs.scrapy.org/en/latest/topics/items.html

import scrapy


class DoubanItem(scrapy.Item):
    # define the fields for your item here like:
    # name = scrapy.Field()
   
    # 评论人数
    ranking=scrapy.Field()
    # 电影名称
    movie_name=scrapy.Field()
    # 评分
    score=scrapy.Field()
    # 电影描述
    describe=scrapy.Field()

修改settings脚本

修改内容

DEFAULT_REQUEST_HEADERS = {
   'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
   'Accept-Language': 'en',
   'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.81 Safari/537.36'
}
FEED_URL="douban.csv"
FEED_FORMAT='csv'
FEED_EXPORT_ENCODING="gbk"

运行

在命令行输入

# 指定保存文件名或目录
scrapy crawl dbmovie_spider -o douban.csv

可以看到爬取结果并不是按照顺序排列的
大家可以尝试如何爬取带顺序的结果
在这里插入图片描述

以上是关于Scrapy爬虫 爬取豆瓣TOP250的主要内容,如果未能解决你的问题,请参考以下文章

爬虫学习--MOOC爬取豆瓣top250

Scrapy项目 - 数据简析 - 实现豆瓣 Top250 电影信息爬取的爬虫设计

python爬虫入门Scrapy框架之数据库保存

python爬虫入门爬取豆瓣电影top250

scrapy爬取豆瓣电影top250

03_使用scrapy框架爬取豆瓣电影TOP250