Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >送书 | 教你爬取电影天堂数据

送书 | 教你爬取电影天堂数据

作者头像
我被狗咬了
发布于 2021-09-02 03:34:43
发布于 2021-09-02 03:34:43
1.4K00
代码可运行
举报
文章被收录于专栏:Python乱炖Python乱炖
运行总次数:0
代码可运行

大家好!我是啃书君

我和朋友说:俗话说,闲来没事干,不如斗地主,哎,我们不斗地主,就是玩~。那不斗地主,我们干点啥好捏~,不如看电影?!

朋友说:那些新上映的好看的电影、电视剧和动漫,绝大部分都要钱,你这个糟老头子坏得很,又想骗我充会员,借会员给你!!!

我说:哎呀,被你发现了,没事,那我们去电影天堂爬电影数据,到时候想看哪部就下载下来,慢慢看!

爬取分析

在爬取之前,分析爬取的逻辑和理清思路。

我们要爬取的数据是电影天堂首页里面的全部电影信息,例如电影海报、电影名、上映时间、产地、字幕、片长、简介、电影下载链接等电影信息。首先我们打开电影天堂,如下图所示:

打开开发者工具,我们发现每一个div class="co_content222"存放一个首页的模块,这个div class="co_content222"与之对应的模块是2021必看热片,我们打开其中的一个div,如下图所示:

我们发现,里面有很多个li,每个li存放着电影名和电影页面链接,我们点击其中一个a链接并跳转到该电影页面,里面有我们需要的数据信息,例如:电影海报、电影名、上映时间、产地、字幕、片长、简介,电影下载链接等,如下图所示:

我们继续打开开发者工具,经过简单的查找,发现电影信息都存放在div id="Zoom"里面,如下图所示:

好了,我们已经知道每个电影页面链接和电影数据信息存放的位置了,接下来正式开始爬取。

实战演练

电影天堂源代码获取

首先我们定义了get_index()方法来获取电影天堂首页源代码,具体代码如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def get_index():
    response = requests.get('https://www.dy2018.com/?jdfwkey=ycdpz3')
    response.encoding = 'gb2312'
    html = response.text
    get_link(html)

这个电影天堂这个网站比较特别,不要加请求头也可以正常获取数据。

这里要注意的是:

电影天堂网页的源代码的head部分的编码为:gb2312,所以我们利用requests库来改变输出结果的编码。

获取页面源代码后,我们将源代码传递到get_link()方法中。

电影URL链接获取

在上一步中,我们已经获取到了页面源代码,接下来我们要获取每个电影的URL链接,具体代码如下图所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pattern1 = re.compile('2021必看热片.*?<ul>(.*?)</ul>', re.S)
ul = re.findall(pattern1, html)
for i in ul:
    li = i.strip()
    pattern2 = re.compile("<li>.*?'(.*?)'.*?</li>")
    a = re.findall(pattern2, li)
    links = ['https://www.dy2018.com/' + ii for ii in a]
    for link in links:
        get_data(link)

首先我们为了按照首页的每个模块来获取电影链接,所以我们创建了一个名为pattern1的正则表达式对象。因为整个页面源代码中,模块名只出现了一次,例如2021必看热片、迅雷电影资源等,所以我们可以通过这个来准确地获取每个模块的ul数据。由于获取到的数据有换行符,所以我们需要使用strip()方法来清除开头或是结尾的换行符。

接下来我们创建了一个名为pattern2的正则表达式对象来获取a链接里面的href,通过使用列表推导式,我们将每个电影的URL链接存放在列表中,然后将每个列表的元素传递到get_data()方法中。

电影信息的获取

接下来,我们要利用我们已经获取到的电影URL链接来获取电影信息,具体代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
response = requests.get(link)
response.encoding = 'gb2312'
dats = response.text
html = parsel.Selector(dats)
pattern = re.compile(r'<!--Content Start-->.*?src="(.*?)".*?◎译  名 (.*?)<br />.*?◎产  地 (.*?)<br />◎类  别 (.*?)<br />.*?◎字  幕 (.*?)<br />◎上映日期 (.*?)<br />.*?◎片  长 (.*?)<br />.*?◎简  介<br />  (.*?)<', re.S)
ul = re.findall(pattern, dats)
for l in ul:
 down_list = html.xpath('//div[@id="downlist"]/table/tbody/tr/td//text()').extract()
    content = {
     'img': l[0],
        'name': l[1],
        'place': l[2],
        'type': l[3],
        'font': l[4],
        'data': l[5],
        'time': l[6],
        'text': re.sub('&\w+;', '', l[7]).replace('<br />', '').strip(),
        'download': down_list,
        }
        for i in content.values():
            print(i)
if __name__ == '__main__':
    get_index()

由于div id='Zoom'中的电影数据信息中,电影图片等数据只有一个,而电影下载链接可能有多个,例如电视剧的下载链接就有多个,我们如果只用一个正则表达式对象来获取电视剧数据信息的话,只能获取到一个下载链接,所以我们首先通过正则表达式来获取电影图片、电影名、产地、类型、字幕、上映时间、片长和简介,接着使用xpath来获取电视剧的下载链接。

获取完数据信息后,所有的数据放在字典中,并循环打印出来,运行结果如下:

由于本人觉得这种打印出来的数据算是比较好看了,所以没做进一步的数据保存,大家可以根据需要自行将这些数据存储到其他地方。

送书

又到了每周三的送书时刻,今天给大家带来的是《Python网络爬虫框架Scrapy从入门到精通》,本书从python主流框架scrapy的简介及网络爬虫知识讲起,逐步深入到scrapy进阶实战。本书从实战出发,根据不同需求,有针对性地讲解了静态网页、动态网页、app应用是如何爬取所需数据,以及scrapy是如何部署分布式爬取,还介绍了用scrapy+pandas是如何行数据分析及数据展示,让读者不但可以系统地学scrapy编程的相关知识,而且还能对scrapy应用开发有更为深入的理解。本书分为12章,涵盖的主要内容有scrapy框架简介;scrapy网络爬虫知识介绍;scrapy开发环境的搭建;scrapy架构及编程;scrapy阶;实战项目:scrapy静态网页的爬取;实战项目:scrapy动态网页的爬取;实战项目:scrapy爬取app应用数据;scrapy的分布式部署与爬取;分布式的实战项目;用selenium框架测试;用scrapy+pandas行数据分析。本书内容通俗易懂,实例典型,实用性强,特别适合学python主流框架scrapy的入门读者和阶读者阅读,也适合数据分析与挖掘技术的初学者阅读,还适合相关培训机构的师生阅读。

公众号回复:送书 ,参与抽奖(共5本)

点击下方回复:送书 即可!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-08-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python乱炖 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【Python爬虫】120行代码爬取豆瓣电影,附源码
学习爬虫,拿豆瓣电影进行练手,无奈豆瓣电影存在反爬机制,爬完250就会重定向要求我进行登陆操作,所以我这一次只爬取前50进行相关测试,废话不多说,我们来看下源代码:
python学习教程
2019/07/10
4.8K0
采集天堂电影数据来看看
最近本狗想放松放松, 想了想还是看看几部电影最为可贵, 于是找了大家最为熟悉的网站《电影天堂》去看个究竟。为了更好的去"挑选"电影,本狗就爬取了大几十页的数据。废话不多说:开工啦
Python知识大全
2020/02/13
4390
采集天堂电影数据来看看
爬取豆瓣电影信息
昨天写了一个小爬虫,爬取了豆瓣上2017年中国大陆的电影信息,网址为豆瓣选影视,爬取了电影的名称、导演、编剧、主演、类型、上映时间、片长、评分和链接,并保存到MongoDB中。
py3study
2020/01/20
1.3K0
Python 爬取猫眼电影最受期待榜
    主要爬取猫眼电影最受期待榜的电影排名、图片链接、名称、主演、上映时间。   思路:1.定义一个获取网页源代码的函数;      2.定义一个解析网页源代码的函数;      3.定义一个将解析的数据保存为本地文件的函数;      4.定义主函数;      5.使用多进程爬取。 步骤一:首先,导入相关的库: import requests import re import json from multiprocessing import Pool from requests.exceptions
希希里之海
2018/05/16
8060
Python爬取电影天堂
摘取部分网友的回复: 1、之前在北京买房,谁想房价开始疯长,链家的房价等数据分析只给了一小部分,远远不能满足自己的需求。于是晚上花了几个小时的时间写了个爬虫,爬下了北京所有的小区信息及北京所有小区的所有历史成交记录。
Dwyane
2018/12/04
8620
Python爬取电影天堂
爬取猫眼电影TOP100榜单所有信息
哈哈哈,同志们好久不见,今天来教大家如何爬取猫眼电影TOP100榜单的所有信息。猫眼电影这个网站可以说设计的非常规范,非常适合小白练手去获得自豪感。所以话不多说,我们开始介绍吧,走你~~~
啃饼思录
2018/10/15
1.3K0
利用多线程到电影天堂爬点电影回家慢慢看【python爬虫入门进阶】(05)
已经好久没有更新爬虫类的文章了,从入门到入狱的好技术怎能不好好学习呢。所以,今天我继续来卷了。本文将从实战的角度介绍一个完整的爬虫。这里以妇孺皆知的电影天堂网站为例进行说明。希望读者朋友们能有所启发,有所收获。
码农飞哥
2021/12/07
8890
利用多线程到电影天堂爬点电影回家慢慢看【python爬虫入门进阶】(05)
爬取豆瓣电影排行top250
功能描述V1.0: 爬取豆瓣电影排行top250 功能分析: 使用的库 1、time 2、json 3、requests 4、BuautifulSoup 5、RequestException 上机实验室: """ 作者:李舵 日期:2019-4-27 功能:抓取豆瓣电影top250 版本:V1.0 """ import time import json import requests from bs4 import BeautifulSoup from requests.e
py3study
2020/01/16
5960
爬取猫眼电影TOP100
本项目基本目标:在猫眼电影中把top100的电影名,排名,海报,主演,上映时间,评分等爬取下来
py3study
2020/01/19
4510
爬取猫眼电影TOP100
爬虫实战-手把手教你爬豆瓣电影
如果上面三小节还有问题,可以点回去再复习一下。作为基础内容并不是要求大家一定都掌握,特别是第三小节,网页解析用法特别多,一般人很难都记住。 我在写这篇的时候也会时不时的翻回去看一看之前的文章,可能有的方法并不是最简单的方法,但是只要达成目的就ok,这里你们自由发挥。
小一不二三
2019/12/31
1K0
爬虫实战-手把手教你爬豆瓣电影
python爬取猫眼电影TOP100榜
给大家演示下关于python爬取猫眼电影TOP100榜相关信息的实例,包含电影排名,电影名称,主演,上映时间,评分等信息,及讲解下爬取过程中遇到的相关知识点。
崔笑颜
2020/07/14
8220
python爬取猫眼电影TOP100榜
Python爬虫(全)
里面的parse方法,这个方法有两个作用 1.负责解析start_url下载的Response 对象,根据item提取数据(解析item数据的前提是parse里全部requests请求都被加入了爬取队列) 2.如果有新的url则加入爬取队列,负责进一步处理,URL的Request 对象 这两点简单来说就是编写爬虫的主要部分
yuanshuai
2022/08/22
13.3K0
Python爬虫(全)
电影知识图谱问答(一)|爬取豆瓣电影与书籍详细信息
最近在做关于知识图谱方面的实验,需要一些数据,于是爬取了豆瓣上关于电影和书籍的信息。两天时间内共爬取20W+条数据,包括电影信息、电影演员信息、书籍信息、书籍作者信息,GitHub链接为https://github.com/weizhixiaoyi/DouBan-Spider。
小一
2019/08/14
1.9K0
电影知识图谱问答(一)|爬取豆瓣电影与书籍详细信息
爬取豆瓣Top250 - 2
码农GT038527
2024/11/11
1860
爬取豆瓣Top250 - 2
豆瓣电影top250爬虫及可视化分析
  人类社会已经进入大数据时代,大数据深刻改变着我们的工作和生活。随着互联网、移动互联网、社交网络等的迅猛发展,各种数量庞大、种类繁多、随时随地产生和更新的大数据,蕴含着前所未有的社会价值和商业价值!!!
小孙同学
2022/01/17
6.8K0
豆瓣电影top250爬虫及可视化分析
Java豆瓣电影爬虫——抓取电影详情和电影短评数据
  一直想做个这样的爬虫:定制自己的种子,爬取想要的数据,做点力所能及的小分析。正好,这段时间宝宝出生,一边陪宝宝和宝妈,一边把自己做的这个豆瓣电影爬虫的数据采集部分跑起来。现在做一个概要的介绍和演示。 动机   采集豆瓣电影数据包括电影详情页数据和电影的短评数据。   电影详情页如下图所示   需要保存这些详情字段如导演、编剧、演员等还有图中右下方的标签。   短评页面如下图所示   需要保存的字段有短评所属的电影名称,每条评论的详细信息如评论人名称、评论内容等。
JackieZheng
2018/01/16
2.6K0
Java豆瓣电影爬虫——抓取电影详情和电影短评数据
毕业设计(三):爬取动态网页
按照上一篇的分析,直接使用XPath找到该标签,然后通过parse提取出数据,在写入到item中就完事了。但是,当信心满满的写完代码后却发现,控制台输入了一个简简单单的[]。
Cloud-Cloudys
2020/07/06
6660
常用正则表达式最强汇总(含Python代码举例讲解+爬虫实战)
Python的re模块(正则表达式)提供各种正则表达式的匹配操作。在绝大多数情况下能够有效地实现对复杂字符串的分析并取出相关信息。在讲解如何实际应用正则表达式之前,先教大家学习并掌握正则表达式的基本语法(匹配规则)。
Python研究者
2021/09/09
1.9K0
常用正则表达式最强汇总(含Python代码举例讲解+爬虫实战)
多种方法爬取猫眼电影并分析(附代码)
摘要: 作为小白,爬虫可以说是入门python最快和最容易获得成就感的途径。因为初级爬虫的套路相对固定,常见的方法只有几种,比较好上手。选取网页结构较为简单的猫眼top100电影为案例进行练习。 重点是用上述所说的4种方法提取出关键内容。一个问题采用不同的解决方法有助于拓展思维,通过不断练习就能够灵活运用。
Python中文社区
2018/12/11
6.5K0
多种方法爬取猫眼电影并分析(附代码)
爬取豆瓣Top250 - 1
码农GT038527
2024/11/06
1850
爬取豆瓣Top250 - 1
相关推荐
【Python爬虫】120行代码爬取豆瓣电影,附源码
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档