0

0

Scrapy爬虫实战:抓取猫眼电影排行榜数据

WBOY

WBOY

发布时间:2023-06-22 08:58:55

|

2663人浏览过

|

来源于php中文网

原创

scrapy爬虫实战:抓取猫眼电影排行榜数据

随着互联网的发展,数据爬取成为了大数据时代的重要组成部分。在数据爬取的过程中,利用爬虫技术能够自动化地获取当下需要的数据,并将其进行处理和分析。近年来,Python成为了最受欢迎的编程语言之一,其中,Scrapy是一个基于Python的强大的爬虫框架,其应用范围广泛,尤其在数据抓取领域受到了大家的关注。

本文即基于Scrapy框架来实现猫眼电影排行榜数据的爬取,具体过程分为四个部分:分析页面结构、编写爬虫框架、解析页面、存储数据。

一、分析页面结构

首先,我们需要对猫眼电影排行榜页面的结构进行分析。为了方便操作,我们使用Google Chrome浏览器进行页面分析,并使用XPath来提取需要的信息。

可以看到,猫眼电影排行榜页面包含了多个电影的信息,每一个电影都有一个类似下图中的HTML代码块。

我们的目标是从每个HTML代码块中获取电影的名称、主演、上映时间、电影海报链接和评分五项数据。那么我们可以在Google Chrome浏览器中按F12键打开开发者工具,然后选择"Elements"标签页,并将鼠标移动到我们需要抽取的目标元素上,右键点击并选择"Copy -> Copy XPath"。

复制出来的XPath路径如下:

/html/body/div[3]/div/div[2]/dl/dd[1]/div/div/div[1]/p[1]/a/text()

其中"/html/body/div[3]/div/div[2]/dl/dd"表示整个电影列表的父节点,依次往下,即可找到我们需要抽取的元素。

二、编写爬虫框架

接下来,我们需要建立一个Scrapy项目,可参照Scrapy的官方文档(https://docs.scrapy.org/en/latest/intro/tutorial.html)。创建好项目之后,在Spiders目录下新建一个名为maoyan.py的文件。

下面是我们的爬虫框架代码:

import scrapy
from maoyan.items import MaoyanItem

class MaoyanSpider(scrapy.Spider):

name = 'maoyan'
allowed_domains = ['maoyan.com']
start_urls = ['http://maoyan.com/board/4']

def parse(self, response):
    movies = response.xpath('//dl[@class="board-wrapper"]/dd')
    for movie in movies:
        item = MaoyanItem()
        item['title'] = movie.xpath('.//p[@class="name"]/a/@title').extract_first()
        item['actors'] = movie.xpath('.//p[@class="star"]/text()').extract_first().strip()
        item['release_date'] = movie.xpath('.//p[@class="releasetime"]/text()').extract_first().strip()
        item['image_url'] = movie.xpath('.//img/@data-src').extract_first()
        item['score'] = movie.xpath('.//p[@class="score"]/i[@class="integer"]/text()').extract_first() + 
                        movie.xpath('.//p[@class="score"]/i[@class="fraction"]/text()').extract_first()
        yield item

在代码中,我们首先定义了Spider的name、allowed_domains和start_urls。其中,“allowed_domains”表示只有属于该域名下的URL才会被爬虫访问和抽取内容。同时,“start_urls”表示爬虫将请求的第一个URL地址。

TextIn Tools
TextIn Tools

是一款免费在线OCR工具,包含文字识别、表格识别,PDF转文件,文件转PDF、其他格式转换,识别率高,体验好,免费。

下载

Spider的parse方法接收来自response的内容,然后通过XPath路径抽取了每个电影的名称、主演、上映时间、电影海报链接和评分五项数据,保存到MaoyanItem中。

最后,我们通过yield关键字返回了每个Item对象。注意:我们定义的Item对象是在一个名为items.py的文件中,需要导入。

三、解析页面

当爬虫定位到我们需要抓取的页面时,我们就可以开始解析HTML文档,提取我们需要的信息。这部分内容主要集中在Scrapy中response对象的XPath查询和正则表达式处理上。

在本例中,我们使用XPath路径来抽取猫眼电影排行榜页面中的每个电影的五项数据。

四、存储数据

当数据被解析后,我们需要将其存储起来。通常来说,我们将所得到的数据存在一个文件中或者保存到一个数据库中。

在本例中,我们选择将数据保存到一个.csv文件中:

import csv

class MaoyanPipeline(object):

def __init__(self):
    self.file = open('maoyan_top100_movies.csv', 'w', newline='', encoding='utf-8')
    self.writer = csv.writer(self.file)

def process_item(self, item, spider):
    row = [item['title'], item['actors'], item['release_date'], item['image_url'], item['score']]
    self.writer.writerow(row)
    return item

def close_spider(self, spider):
    self.file.close()

在上面的代码中,我们使用了Python内部的csv模块将数据写入到一个名为maoyan_top100_movies.csv的文件中。当这个Spider被关闭的时候,csv文件也会被关闭。

总结

通过本文,我们了解了如何使用Scrapy框架来实现猫眼电影排行榜数据的爬取。首先我们分析了页面结构,然后编写了Scrapy框架来抓取数据、解析页面和存储数据。在实战中我们可以从中学习了如何在抓取数据中做到合法性、可用性及高效性的统一。

相关专题

更多
python开发工具
python开发工具

php中文网为大家提供各种python开发工具,好的开发工具,可帮助开发者攻克编程学习中的基础障碍,理解每一行源代码在程序执行时在计算机中的过程。php中文网还为大家带来python相关课程以及相关文章等内容,供大家免费下载使用。

715

2023.06.15

python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

625

2023.07.20

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

739

2023.07.25

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

617

2023.07.31

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

1235

2023.08.03

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

547

2023.08.04

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

574

2023.08.04

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

697

2023.08.11

桌面文件位置介绍
桌面文件位置介绍

本专题整合了桌面文件相关教程,阅读专题下面的文章了解更多内容。

0

2025.12.30

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号