爬虫实战(一)利用scrapy爬取豆瓣华语电影

本文介绍了如何使用scrapy爬取豆瓣华语电影,包括爬取思路、分析、实现过程,以及反反爬虫策略。通过解析页面获取电影信息,并存储到MongoDB数据库,总计爬取了33133部电影。
摘要由CSDN通过智能技术生成

爬虫第一个项目是爬取豆瓣华语电影,后面将对这部分数据进行分析。

本文也是发表于『运筹OR帷幄』微信公众号的《用数据带你了解电影行业—华语篇》的爬虫介绍篇。

1. 爬取思路

在观察了豆瓣每个影片的链接地址后,写下了主要思路:
(1)在豆瓣电影的选片页面,筛选所有华语(即中国大陆、香港、台湾)的影片,并获取其id;
(2)通过id构建并爬取该影片链接,获得其导演、主演、类型、片长、评分等信息。

2. 爬取分析

那这个思路能否实现呢?我们可以打开chrome,打开豆瓣影视筛选的页面,筛选电影、中国大陆。首先查看网页源代码,可以发现这个页面是JavaScript实现的动态页面。如果直接用requests等库来抓取原页面,是无法获得数据的。那接着分析网页后台向接口发送的请求,看是否有Ajax请求。键盘快捷键f12调出开发者工具,选择Network,重新刷新页面,在Fillter输入框下面的筛选中选择XHR,筛选出Ajax请求。可以发现有个new_search_subject开头的请求,点击Preview的选项,发现这就是页面上显示的影片信息。双击该请求,查看具体的数据。
爬虫思路-1
可以看到页面数据是JSON格式,且没有加密,适合通过模拟Ajax请求来获取数据。下面分析该请求的参数:
https://movie.douban.com/j/new_search_subjects?sort=U&range=0,10&tags=%E7%94%B5%E5%BD%B1&start=0&countries=%E4%B8%AD%E5%9B%BD%E5%A4%A7%E9%99%86

sort是排序方式,range是评分数范围,tags、countries是筛选的参数,而start是控制页面的参数。每个页面有20部电影,每部电影有标题、id等信息。页数从0开始,每隔20整体变化一次。不过看不到最大的页数,只能先尝试大的数字,看最多能到多少页。大致看下,中国大陆、香港目前最大是9960,台湾是6500。

获取id解决了,接着来看单个页面,比如https://movie.douban.com/subject/26752088/。

  • 6
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
好的,下面我来为你介绍一下如何使用Scrapy爬取豆瓣TOP250电影信息。 1. 安装Scrapy 首先,你需要安装Scrapy。如果你已经安装了Python,可以在命令行中使用以下命令安装Scrapy: ``` pip install Scrapy ``` 2. 创建Scrapy项目 接下来,我们需要创建一个Scrapy项目。在命令行中输入以下命令: ``` scrapy startproject douban_top250 ``` 这将会在当前目录下创建一个名为“douban_top250”的文件夹,其中包含了Scrapy项目的基本结构。 3. 编写爬虫代码 在“douban_top250/spiders”目录下创建一个名为“douban.py”的文件,并输入以下代码: ```python 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.xpath('//div[@class="hd"]'): yield { 'title': movie.xpath('.//span[@class="title"]/text()').extract_first(), 'rating': movie.xpath('../div[@class="bd"]/div[@class="star"]/span[@class="rating_num"]/text()').extract_first(), 'link': movie.xpath('.//a/@href').extract_first(), } next_page = response.xpath('//span[@class="next"]/a/@href') if next_page: yield response.follow(next_page[0], self.parse) ``` 这段代码定义了一个名为“DoubanSpider”的类,用于爬取豆瓣电影TOP250的电影名称、评分和链接。在这个类中,我们使用了XPath选择器来定位页面中的元素。 4. 运行爬虫 在命令行中进入“douban_top250”文件夹,并输入以下命令来运行爬虫: ``` scrapy crawl douban -o douban_top250.csv ``` 这将会运行刚才编写的“DoubanSpider”爬虫,并将结果保存在名为“douban_top250.csv”的文件中。 至此,你已经学会了如何使用Scrapy爬取豆瓣TOP250电影信息。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值