scrapy爬取豆瓣电影列表

这篇博客详细介绍了如何使用Scrapy框架爬取豆瓣电影广州上映电影的名称。首先,介绍了所需环境和安装步骤,然后创建Scrapy项目,解析项目目录及关键文件的作用。接着,博主展示了如何在items.py、doubanMovieSpider.py和pipelines.py中编写代码以爬取和处理数据。最后,博主提醒注意添加header以避免403错误,并提供了测试成功的响应信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目标环境:

python 3.6
scrapy 1.5.0

准备:

安装scrapy ,参考:http://blog.youkuaiyun.com/yctjin/article/details/70658811
检查是否安装成功 ,在命令行输入:scrapy -version
这里写图片描述
如图所示则安装成功~

开始新建项目

在准备好的文件夹打开命令行,分别输入
scrapy startproject doubanMovie
cd doubanMovie
scrapy genspider doubanMovieSpider movie.douban.com/cinema/nowplaying/guangzhou/
得到结果如下所示:

D:\pythonProject\python\scrapy\test>scrapy startproject doubanMovie
New Scrapy project ‘doubanMovie’, using template directory ‘e:\python\lib\site-packages\scrapy\templates\project’, created in:
D:\pythonProject\python\scrapy\test\doubanMovie

You can start your first spider with:
cd doubanMovie
scrapy genspider example example.com

D:\pythonProject\python\scrapy\test>cd doubanMovie

D:\pythonProject\python\scrapy\test\doubanMovie>scrapy genspider doubanMovieSpider movie.douban.com/cinema/nowplaying/guangzhou/
Created spider ‘doubanMovieSpider’ using template ‘basic’ in module:
doubanMovie.spiders.doubanMovieSpider

在文件夹中输入命令 tree/f , 如文件目录如下所示这说明成功:

D:.
│ scrapy.cfg

└─doubanMovie
│ items.py
│ middlewares.py
│ pipelines.py
│ settings.py
init.py

├─spiders
│ │ doubanMovieSpider.py
│ │ init.py
│ │
│ └─pycache
init.cpython-36.pyc

└─pycache
settings.cpython-36.pyc
init.cpython-36.pyc

目录文件解释:

其中最主要用到的文件有4个:分别是items.py,pipelines.py,settings.py,doubanMovieSpider.py

items.py:

定义爬虫最终需要哪些项,相当于python里的字典

settings.py

配置项目,决定由谁去处理爬取的内容

pipelines.py

当scrapy爬虫抓取到网页数据后,数据如何处理取决于该文件如何设置

doubanMovieSpider.py

决定怎么爬取目标网站

其他文件

.pyc文件后缀的为python程序编译得到的字节码文件,_ init _.py文件将上级目录变成一个模块,middlewares.py 中间件,暂时没有用到。

目标url:

https://movie.douban.com/cinema/nowplaying/guangzhou/

抓取该网站上的电影名称

爬虫编写

  1. 由于我们只需要爬取电影名称,故修改items.py:
# -*- coding: utf-8 -*-

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

import scrapy


class DoubanmovieItem(scrapy.Item):
    # define the fields for your item here like:
    # name = scrapy.Field()
    moiveName = scrapy.Field()

与最初对比只是去掉了pass,增加了moiveName = scrapy.Field() 成员,相当于将类当成字典作用

2 . 定义怎么爬取 doubanMovie.py:


                
好的,以下是使用Scrapy爬取豆瓣电影的步骤: 1.创建Scrapy项目 在命令行中输入以下命令,在指定位置创建一个名为douban_movie的Scrapy项目。 ``` scrapy startproject douban_movie ``` 2.编写Spider 在项目的spiders目录下,创建一个名为douban_spider.py的Python文件。并在其中编写Spider代码。 ``` import scrapy class DoubanSpider(scrapy.Spider): name = "douban" allowed_domains = ["movie.douban.com"] start_urls = [ "https://movie.douban.com/top250" ] def parse(self, response): for movie in response.css('div.item'): yield { 'title': movie.css('span.title::text').get(), 'rating': movie.css('span.rating_num::text').get(), 'link': movie.css('div.hd a::attr(href)').get() } next_page = response.css('span.next a::attr(href)').get() if next_page is not None: yield response.follow(next_page, self.parse) ``` 在这个Spider中,我们首先定义了Spider的名称和允许爬取的域名。然后,我们指定了起始URL,并定义了parse方法来解析网页内容。 在parse方法中,我们使用CSS选择器选取出了每部电影的标题、评分和详情链接,并将它们封装成字典形式返回。同时,我们也使用了response.follow方法来跟随下一页链接继续爬取。 3.设置项目配置 打开项目的settings.py文件,将ROBOTSTXT_OBEY设置为False,这样我们就可以爬取豆瓣电影网站了。 ``` ROBOTSTXT_OBEY = False ``` 4.运行Spider 在项目的根目录下,执行以下命令来运行Spider。 ``` scrapy crawl douban -o movies.csv ``` 这个命令会执行我们编写的Spider,并将结果保存到一个名为movies.csv的CSV文件中。 恭喜你,现在你已经成功使用Scrapy爬取豆瓣电影网站的电影信息!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值