Scrapy实战:爬取豆瓣电影数据和评分热度排名

scrapy是一个开源的python框架,用于快速高效地爬取数据。在本文中,我们将使用scrapy爬取豆瓣电影的数据和评分热度排名。

准备工作

首先,我们需要安装Scrapy。您可以在命令行中输入以下命令来安装Scrapy:

pip install scrapy

登录后复制

接下来,我们将创建一个Scrapy项目。在命令行中,输入以下命令:

scrapy startproject doubanmovie

登录后复制

这将创建一个名为doubanmovie的Scrapy项目。然后,我们将进入项目目录并创建一个名为douban.py的Spider。在命令行中,输入以下命令:

cd doubanmoviescrapy genspider douban douban.com

登录后复制

现在,我们已经有了一个可以使用的Spider。接下来,我们将定义Spider的行为以获取所需的数据。

爬取电影数据

我们将使用Spider来爬取豆瓣电影的数据。具体来说,我们将获取以下信息:

电影名称导演演员类型国家语言上映日期片长评分评价人数

打开douban.py文件,我们将添加以下代码:

import scrapyclass DoubanSpider(scrapy.Spider):    name = 'douban'    allowed_domains = ['douban.com']    start_urls = ['https://movie.douban.com/top250']    def parse(self, response):        movie_list = response.xpath('//div[@class="item"]')        for movie in movie_list:            yield {                'name': movie.xpath('.//span[@class="title"]/text()').get(),                'director': movie.xpath('.//div[@class="bd"]/p/text()[1]').get(),                'actors': movie.xpath('.//div[@class="bd"]/p/text()[2]').get(),                'genre': movie.xpath('.//div[@class="bd"]/p/text()[3]').get(),                'country': movie.xpath('.//div[@class="bd"]/p/text()[4]').get(),                'language': movie.xpath('.//div[@class="bd"]/p/text()[5]').get(),                'release_date': movie.xpath('.//div[@class="bd"]/p/text()[6]').get(),                'duration': movie.xpath('.//div[@class="bd"]/p/text()[7]').get(),                'rating': movie.xpath('.//span[@class="rating_num"]/text()').get(),                'num_reviews': movie.xpath('.//div[@class="star"]/span[@class="rating_num"]/text()').get(),            }

登录后复制

在这个代码中,我们使用XPath来选取我们需要获取的信息。我们使用yield来生成这些信息,并使用return来将它们返回到用户。

如果我们现在运行我们的Spider(运行以下命令:scrapy crawl douban),它将爬取前250部电影的数据,并将它们返回到命令行中。

获取评分热度排名

现在,我们已经成功地获取了前250部电影的数据。接下来,我们将获取它们的评分热度排名。

我们需要先创建一个新的Spider,来爬取豆瓣电影的TOP250列表。我们将使用此列表来获取电影的排名。

在douban.py文件中,我们将添加以下代码:

import scrapyclass DoubanSpider(scrapy.Spider):    name = 'douban'    allowed_domains = ['douban.com']    start_urls = ['https://movie.douban.com/top250']    def parse(self, response):        movie_list = response.xpath('//div[@class="item"]')        for movie in movie_list:            yield {                'name': movie.xpath('.//span[@class="title"]/text()').get(),                'director': movie.xpath('.//div[@class="bd"]/p/text()[1]').get(),                'actors': movie.xpath('.//div[@class="bd"]/p/text()[2]').get(),                'genre': movie.xpath('.//div[@class="bd"]/p/text()[3]').get(),                'country': movie.xpath('.//div[@class="bd"]/p/text()[4]').get(),                'language': movie.xpath('.//div[@class="bd"]/p/text()[5]').get(),                'release_date': movie.xpath('.//div[@class="bd"]/p/text()[6]').get(),                'duration': movie.xpath('.//div[@class="bd"]/p/text()[7]').get(),                'rating': movie.xpath('.//span[@class="rating_num"]/text()').get(),                'num_reviews': movie.xpath('.//div[@class="star"]/span[@class="rating_num"]/text()').get(),            }        next_page = response.xpath('//span[@class="next"]/a/@href')        if next_page:            url = response.urljoin(next_page[0].get())            yield scrapy.Request(url, callback=self.parse)

登录后复制

在代码中,我们使用了一个名为next_page的变量,来检查我们是否到达了最后一页。如果我们还没有到达最后一页,我们将继续爬取下一页。

接下来,我们需要更新parse方法,以获取电影的排名。我们将使用Python的enumerate函数来将排名与每部电影相关联。

在douban.py文件中,我们将替换原来的parse方法:

def parse(self, response):        movie_list = response.xpath('//div[@class="item"]')        for i, movie in enumerate(movie_list):            yield {                'rank': i + 1,                'name': movie.xpath('.//span[@class="title"]/text()').get(),                'director': movie.xpath('.//div[@class="bd"]/p/text()[1]').get(),                'actors': movie.xpath('.//div[@class="bd"]/p/text()[2]').get(),                'genre': movie.xpath('.//div[@class="bd"]/p/text()[3]').get(),                'country': movie.xpath('.//div[@class="bd"]/p/text()[4]').get(),                'language': movie.xpath('.//div[@class="bd"]/p/text()[5]').get(),                'release_date': movie.xpath('.//div[@class="bd"]/p/text()[6]').get(),                'duration': movie.xpath('.//div[@class="bd"]/p/text()[7]').get(),                'rating': movie.xpath('.//span[@class="rating_num"]/text()').get(),                'num_reviews': movie.xpath('.//div[@class="star"]/span[@class="rating_num"]/text()').get(),            }        next_page = response.xpath('//span[@class="next"]/a/@href')        if next_page:            url = response.urljoin(next_page[0].get())            yield scrapy.Request(url, callback=self.parse)

登录后复制

现在,如果我们再次运行我们的Spider,它将获取前250部电影的数据,并将它们返回到命令行中。此时,我们将看到所有电影的排名。

结论

Scrapy是一种非常强大和灵活的工具,用于快速高效地爬取数据。在本文中,我们已经成功地使用Scrapy来爬取豆瓣电影的数据和评分热度排名。

我们使用Python代码和XPath来选择性获取网页上的信息,并使用yield语句来将其返回给用户。在整个过程中,Scrapy提供了一个简单而有效的方式来管理和爬取大量的数据,使我们能够快速地进行数据分析和处理。

以上就是Scrapy实战:爬取豆瓣电影数据和评分热度排名的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2232209.html

(0)
上一篇 2025年2月26日 15:48:30
下一篇 2025年2月26日 15:48:50

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 学习如何使用PHP和Scrapy爬取数据

    随着互联网数据量越来越大,如何快速获取和处理数据成为了很多人的需求。而爬虫技术则成为了迅速获取数据的一种常用方法。本文将介绍如何使用php和scrapy来实现数据爬取。 一、PHP数据爬取 PHP是一种非常流行的服务器端脚本语言,拥有很多强…

    编程技术 2025年3月30日
    200
  • 豆瓣豆列功能在哪里

    还在为找不到豆瓣豆列功能而烦恼吗?别担心,这篇简短教程将带你快速找到它! 第一步:打开豆瓣App,点击底部导航栏中的“我的”选项。 第二步:在“我的”页面,你会看到“豆列”入口,点击进入即可查看你的豆列或收藏。 第三步:创建或管理你的豆列。…

    2025年3月29日
    200
  • 豆瓣怎么删除自己的发帖

    掌握豆瓣删帖技巧,轻松管理你的社区内容!本文将指导您快速删除豆瓣上的帖子。 首先,打开豆瓣App,点击底部导航栏的“我的”选项。 找到目标帖子后,点击帖子右上角的更多操作菜单(通常显示为三个点)。 在弹出的菜单中,选择“删除动态”选项即可完…

    2025年3月29日
    100
  • 豆瓣书架在哪里

    轻松找到你的豆瓣书架!豆瓣app拥有海量书籍,收藏好书到书架,方便随时阅读。不知道书架在哪?别担心,跟着以下步骤,快速找到你的专属书架! 第一步:打开菜单 打开豆瓣App,点击左上角的三条横线图标,进入App菜单。 第二步:进入书架 在菜单…

    2025年3月29日
    100
  • Vue开发经验总结:优化SEO和搜索引擎爬取的技巧

    Vue开发经验总结:优化SEO和搜索引擎爬取的技巧 随着互联网的快速发展,网站的SEO(Search Engine Optimization,搜索引擎优化)变得越来越重要。对于使用Vue进行开发的网站来说,优化SEO和搜索引擎爬取是至关重要…

    2025年3月13日
    200
  • Scrapy与scrapy-splash框架快速加载js页面

    一、前言 我们在使用爬虫程序爬取网页时,一般对于静态页面的爬取是比较简单的,之前写过挺多的案例。但是对于使用js动态加载的页面如何爬取呢? 对于动态js页面的爬取有以下几种爬取的方式: 通过selenium+phantomjs实现。 pha…

    2025年3月8日
    400
  • 豆瓣怎么评分 豆瓣如何隐藏主页全部内容

    豆瓣app使用指南:评分、隐私设置及帖子删除 豆瓣APP功能丰富,是涵盖多个文化领域的优秀社交平台。本文将解答一些常见问题,助您更好地使用豆瓣。 一、如何评分? 打开豆瓣APP,进入您想评分的电影、书籍或音乐页面。点击“看过”按钮。在弹出的…

    2025年3月8日 互联网
    400
  • 想要用 python 做爬虫, 是使用 scrapy框架还是用 requests, bs4 等库?

    想要用python(python3)实现一个爬虫,来完成自己的一些需求。参考网上的资料,发现对自己而言有两种待选的方案:1. 使用scrapy框架 都说该框架功能强大,实现简单。但是不兼容python3,2. 使用requests 和 bs…

    编程技术 2025年3月6日
    300
  • 深入剖析Python的爬虫框架Scrapy的结构与运作流程

    网络爬虫(web crawler, spider)就是一个在网络上乱爬的机器人。当然它通常并不是一个实体的机器人,因为网络本身也是虚拟的东西,所以这个“机器人”其实也就是一段程序,并且它也不是乱爬,而是有一定目的的,并且在爬行的时候会搜集一…

    2025年3月5日
    300
  • 实践Python的爬虫框架Scrapy来抓取豆瓣电影TOP250

    安装部署scrapy 在安装Scrapy前首先需要确定的是已经安装好了Python(目前Scrapy支持Python2.5,Python2.6和Python2.7)。官方文档中介绍了三种方法进行安装,我采用的是使用 easy_install…

    2025年3月5日
    500

发表回复

登录后才能评论