爬取电影视频数据

Python爬取腾讯视频电影信息 并进行数据可视化 一、实验目的 1.掌握网络爬虫及数据分析和处理方法 2.掌握python网络爬虫的各种模块 3.掌握数据可视化方法 二、实验内容 1.爬取腾讯视频电影信息 2.处理和保存爬取的数据 3.利用pyecharts将数据可视化 三、实验过程 获取网页源代码 腾讯视频电影信息网页的网址为https://v.qq.com/channel/movie 实现代码如下 运行之后可以看到网页的源代码... 阅读详情

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。

作者:yangrq1018

PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取

python免费学习资料以及群交流解答点击即可加入

做了一些小项目,用的技术和技巧会比较散比较杂,写一个小品文记录一下,帮助熟悉。

需求:经常在腾讯视频上看电影,在影片库里有一个"豆瓣好评"板块。我一般会在这个条目下面挑电影。但是电影很多,又缺乏索引,只能不停地往下来,让js加载更多的条目。然而前面的看完了,每次找新的片就要拉很久。所以用爬虫将"豆瓣好评"里的电影都爬下来整理到一个表中,方便选片。

项目地址:https://github.com/yangrq1018/vqq-douban-film

依赖

需要如下Python包:

  • requests
  • bs4 - Beautiful soup
  • pandas

就这些,不需要复杂的自动化爬虫架构,简单而且常用的包就够了。

爬取影片信息

首先观察电影频道,发现是异步加载的。可以用Firefox(Chrome也行)的inspect中的network这个tab来筛选查看可能的api接口。很快发现接口的URL是这个格式的:

base_url = 'https://v.qq.com/x/bu/pagesheet/list?_all=1&append=1&channel=movie&listpage=2&offset={offset}&pagesize={page_size}&sort={sort}'

其中 offset是请求页开始的位置, pagesize是每页请求的数量, sort是类型。在这里 sort=21指我们需要的"豆瓣好评"类型。pagesize不能大于30,大于30也只会返回三十个元素,低于30会返回指定数量的元素。

 
# 让Pandas完整到处过长的URL,后面会需要

pd.set_option('display.max_colwidth', -1)

base_url = 'https://v.qq.com/x/bu/pagesheet/list?_all=1&append=1&channel=movie&listpage=2&offset={offset}&pagesize={page_size}&sort={sort}'

# 豆瓣最佳类型

DOUBAN_BEST_SORT = 21

NUM_PAGE_DOUBAN = 167

 

写一个小小的循环就可以发现,豆瓣好评这个类型总共有167页,每页三十个元素。

我们使用 requests这个库来请求网页, get_soup会请求第 page_idx页的元素,用 Beautifulsoup来解析 response.content,生成一个类似 DOM,可以很方便地查找我们需要的element的对象。我们返回一个 list。每个电影条目是包含在一个叫list_item的 div里的,所以写一个函数来帮助我们提取所有的这样的 div。

 

    def get_soup(page_idx, page_size=30, sort=DOUBAN_BEST_SORT):

    url = base_url.format(offset=page_idx * page_size, page_size=page_size, sort=sort)

    res = requests.get(url)

    soup = bs4.BeautifulSoup(res.content.decode('utf-8'), 'lxml')

    return soup

    def find_list_items(soup):

    return soup.find_all('div', class_='list_item')

我们遍历每一页,返回一个含有所有的被 bs4过的条目元素的HTML的 list。

 

    def douban_films():

    rel = []

    for p in range(NUM_PAGE_DOUBAN):

    print('Getting page {}'.format(p))

    soup = get_soup(p)

    rel += find_list_items(soup)

    return rel

这是其中的一部电影的HTML代码:

<div __wind="" class="list_item">

<a class="figure" data-float="j3czmhisqin799r" href="https://v.qq.com/x/cover/j3czmhisqin799r.html" tabindex="-1" target="_blank" title="霸王别姬">

<img alt="霸王别姬" class="figure_pic" onerror="picerr(this,'v')" src="//puui.qpic.cn/vcover_vt_pic/0/j3czmhisqin799rt1444885520.jpg/220"/>

<img alt="VIP" class="mark_v" onerror="picerr(this)" src="//i.gtimg.cn/qqlive/images/mark/mark_5.png" srcset="//i.gtimg.cn/qqlive/images/mark/mark_5@2x.png 2x"/>

<div class="figure_caption"></div>

<div class="figure_score">9.6</div>

</a>

<div class="figure_detail figure_detail_two_row">

<a class="figure_title figure_title_two_row bold" href="https://v.qq.com/x/cover/j3czmhisqin799r.html" target="_blank" title="霸王别姬">霸王别姬</a>

<div class="figure_desc" title="主演:张国荣 张丰毅 巩俐 葛优">主演:张国荣 张丰毅 巩俐 葛优</div>

</div>

<div class="figure_count"><svg class="svg_icon svg_icon_play_sm" height="16" viewbox="0 0 16 16" width="16"><use xlink:href="#svg_icon_play_sm"></use></svg>4671万</div>

</div>

不难发现,霸王别姬这部电影,名称、播放地址、封面、评分、主演,是否需要会员和播放量都在这个 div中。在ipython这样的interactive环境中,可以方便地找出怎么用bs来提取他们的方法。我使用的一个技巧是,可以打开一个 spyder.py文件,在里面编写需要的函数,将ipython的自动重载模组的选项打开,然后就可以在console里debug之后将代码复制到文件里,然后ipython中的函数也会相应的更新。这样的好处是会比在ipython中改动代码方便许多。具体如何打开ipython的自动重载:

 

    %load_ext autoreload

    %autoreload 2 # Reload all modules every time before executing Python code

    %autoreload 0 # Disable automatic reloading

这个 parse_films函数用bs中的两个常用方法提取信息:

  • find
  • find_all

因为豆瓣的API已经关闭了检索功能,爬虫又会被反爬虫检测到,本来想检索到豆瓣的评分添加上去这个功能就放弃了。

OrderedDict可以接受一个由(key, value)组成的list,然后key的顺序会被记住。这个在之后我们导出为pandas DataFrame的时候很有用。

def parse_films(films):

'''films is a list of `bs4.element.Tag` objects'''

rel = []

for i, film in enumerate(films):

title = film.find('a', class_="figure_title")['title']

print('Parsing film %d: ' % i, title)

link = film.find('a', class_="figure")['href']

img_link = film.find('img', class_="figure_pic")['src']

# test if need VIP

need_vip = bool(film.find('img', class_="mark_v"))

score = getattr(film.find('div', class_='figure_score'), 'text', None)

if score: score = float(score)

cast = film.find('div', class_="figure_desc")

if cast:

cast = cast.get('title', None)

play_amt = film.find('div', class_="figure_count").get_text()

# db_score, db_link = search_douban(title)

# Store key orders

dict_item = OrderedDict([

('title', title),

('vqq_score', score),

# ('db_score', db_score),

('need_vip', need_vip),

('cast', cast),

('play_amt', play_amt),

('vqq_play_link', link),

# ('db_discuss_link', db_link),

('img_link', img_link),

])

rel.append(dict_item)

return rel

导出

最后,我们调用写好的函数,在主程序中运行。

被解析好,list of dictionaries格式的对象,可以直接传给DataFrame的constructor。按照评分排序,最高分在前面,然后将播放链接转换成HTML的链接标签,更加美观而且可以直接打开。

注意,pandas生成的csv文件一直和excel有兼容性问题,在有中文字符的时候会乱码。解决方法是选择utf_8_sig这个encoding,就可以让excel正常解码了。

Pickle是一个Python十分强大的serialization库,可以保存Python的对象为文件,再从文件中加载Python的对象。我们将我们的DataFrame保存为 .pkl。调用 DataFrame的 to_html方法保存一个HTML文件,注意要将 escape 设置为False不然超链接不能被直接打开。

if __name__ == '__main__':

df = DataFrame(parse_films(douban_films()))

# Sorted by score

df.sort_values(by="vqq_score", inplace=True, ascending=False)

# Format links

df['vqq_play_link'] = df['vqq_play_link'].apply(lambda x: '<a href="{0}">Film link</a>'.format(x))

df['img_link'] = df['img_link'].apply(lambda x: '<img src="{0}">'.format(x))

# Chinese characters in Excel must be encoded with _sig

df.to_csv('vqq_douban_films.csv', index=False, encoding='utf_8_sig')

# Pickle

df.to_pickle('vqq_douban_films.pkl')

# HTML, render hyperlink

df.to_html('vqq_douban_films.html', escape=False)

项目管理

代码部分就是这样。那么写完了代码,就要把它归档保存,以便于分析。选择放在Github上。

那么,其实Github是提供了一个命令行工具的(不是 git,是 git的一个扩展),叫做 hub。macOS用户可以这样安装

brew install hub

hub有许多比 git更简练的语法,我们这里主要用

hub create -d "Create repo for our proj" vqq-douban-film

来直接从命令行创建repo,是不是很酷!根本不用打开浏览器。然后可能会被提示在Github上登记一个你的SSH公钥(验证权限),如果没有的话用 ssh-keygen生成一个就好了,在Github的设置里把 .pub的内容复制进去。

项目目录里,可能会有 __pycache__和 .DS_Store这样你不想track的文件。手写一个 .gitignore又太麻烦,有没有工具呢,肯定有的!Python有一个包


    pip install git-ignore

    git-ignore python # 产生一个python的template

    # 手动把.DS_Store加进去

只用命令行,装到爽。

用Python爬取电影数据并可视化分析_python电影数据分析 本次实验通过使用爬虫获取2016年-2023年的电影数据,并可视化分析的得出以下结论:1.2016年-2019年电影数量逐渐增大,2019年达到最大值,从2020年开始迅速逐年下降。2.发布电影数量最多的国家是中国和美国。3.电影类型最多的剧情片。4.电影片长呈正态分布,且片长和评分呈正相关关系。最后,给大家分享一份Python学习资料,都是我自己学习时整理的,希望可以帮到你!Python是一门非常不错的编程语言,就业前景好、薪资待遇高。 阅读详情

相关推荐

腾讯视频爬虫

其实事情是这样的,上个礼拜我去面试一家公司,工作是做爬虫。然后有了以下对话。 面试官:你是自学的,我有一些问题问你,python的浅拷贝和深拷贝是什么? 我:呵呵 面试官:额。。。你能不能说一说你是怎么理解python的面向对象编程? 我:呵呵 面试官:额。。。。好吧,我不问你基础了。你有没有爬过动态的网页? 我:有啊,我爬过豆瓣啊。 面试官:那我让你爬视频网站你怎么爬?F12里查看器是看不到视频...

ys1030的博客 2739

腾讯视频 Python 爬虫项目实战 !

做了一些小项目,用的技术和技巧会比较散比较杂,写一个小品文记录一下,帮助熟悉。 需求:经常在腾讯视频上看电影,在影片库里有一个"豆瓣好评"板块。我一般会在这个条目下面挑电影。但是电影很多,又缺乏索引,只能不停地往下来,让js加载更多的条目。然而前面的看完了,每次找新的片就要拉很久。所以用爬虫将"豆瓣好评"里的电影都爬下来整理到一个表中,方便选片。 项目地址:https://github.com...

Pythoncxy的博客 2309

Python爬虫实战:逆向解析腾讯视频API,高效获取结构化视频信息

首先,我们定义期望获取的数据结构,这有助于数据验证和代码清晰度。python"""腾讯视频信息数据模型"""title: str = Field(..., description="视频标题")vid: str = Field(..., description="视频唯一ID")play_count: Optional[int] = Field(None, description="播放量")

2201_76125261的博客 2378

一个简单的爬取腾讯视频的网页爬虫

以下是一个简单的爬虫示例,它可以爬取腾讯视频的链接。请注意,这只是一个基础示例,实际的爬虫可能需要处理更复杂的情况,例如JavaScript渲染的页面、登录认证、反爬虫机制等。请注意,这可能包括非视频链接,例如导航链接、广告链接等。如果你只对特定类型的链接感兴趣,你可能需要添加更多的逻辑来过滤链接。另外,爬虫应当遵守网站的robots.txt文件和相关法律法规,不应当用于非法目的。在实际使用爬虫时,请确保你的行为是合法和合规的。# 查找所有的a标签,这些标签通常包含链接。# 遍历所有的a标签。

weixin_63660670的博客 4431

电影推荐及数据分析可视化系统(Python+Echarts+Mysql+Flask框架)

电影推荐及数据分析可视化系统(Python+Echarts+Mysql+Flask框架)

m0_61388098的博客 1844

从‘静态拍照’到‘动态录像’:用Malmquist指数讲好你的效率变化故事(附Stata/R代码)

本文深入探讨了如何利用Malmquist指数构建动态效率分析框架,从静态数据到动态叙事的转变。通过分解技术效率变化(EC)和技术进步(TC),结合Stata/R代码实现四种动态可视化方法,帮助研究者更直观地展示效率变化的动态特征。文章还提供了诊断性叙事结构和比较叙事技巧,助力决策者理解效率提升的来源与趋势。

weixin_32678995的博客 603

Python爬虫爬取1905电影网视频电影并存储到mysql数据库

数据获取方式:微信搜索关注【靠谱杨阅读人生】回复【电影】。整理不易,资源付费,谢谢支持! 代码: 1 import time 2 import traceback 3 import requests 4 from lxml import etree 5 import re 6 from bs4 import BeautifulSoup 7 from lxml.htm...

在职后端开发工程师的学习笔记 446

debian mirrors 镜像源 riscv 64 赛昉 星光 starfive vf2 InRelease‘ doesn‘t support architecture ‘riscv64‘

debian mirrors 镜像 riscv 64 赛昉 星光2 starfive vf2 InRelease' doesn't support architecture 'riscv64'

qq_29758759的博客 1257

Python爬虫爬取搜狐视频电影并存储到mysql数据库

数据获取方式:微信搜索关注【靠谱杨阅读人生】回复【电影】。整理不易,资源付费,谢谢支持。 代码: 1 import time 2 import traceback 3 import requests 4 from lxml import etree 5 import re 6 from bs4 import BeautifulSoup 7 from lxml.h...

在职后端开发工程师的学习笔记 158

PlutoSDR在matlab中的环境配置(包括驱动和硬件支持包)

双击下载到的驱动,除了点击接受协议和设置安装路径,其他只要点击下一步或者安装即可。登录或者注册你的账号,选择你的matlab版本(这里我的是2023b),点击下一步。设置安装路径,并选择我接受,点击下一步,即可安装完成,并在安装路径中得到。完成后,打开设备管理器,在端口和通用串行总线设备一栏,即可看见下图。点击进入,选择相应的系统安装包,这里我选择的Windows。可看到我们要安装的Pluto支持包,安装即可。右击桌面matlab,选择打开文件所在位置。右上角搜索pluto,选择并点击下一步。

weixin_53160338的博客 4864

ctf——writeup

ctf线上赛——第三关地址:http://106.75.86.18:2222提示:ip spoofing——ip伪造首先访问目标地址,一个正常的网页,挺文艺的。上面有些提示。根据上面的提示,我们浏览网页。找了好久,终于找到你。这个跳转链接。(在这个页面下方)我们接着点击这个链接,就跳转到administrator.php这个页面了。看到这个登录页面,就要知道用户名,密码,可是没有怎么办。一开始也试

Child_by_dream的博客 1318

(计算机毕设选题推荐)基于Python腾讯视频top250的电影排行的数据分析与可视化

本文利用Python编程语言,对腾讯视频平台上top250的电影排行榜数据进行了全面的数据分析与可视化展示。通过爬取相关电影信息,包括电影名称、评分、类型、上映时间等,采用统计学方法分析了电影数据的分布特征、用户偏好以及时间趋势。进一步地,利用数据可视化技术,如柱状图、饼图、热力图等,直观地展示了电影排名的变化、类型分布、评分分布等信息,为电影制作方、投资者及观众提供了有价值的参考。研究结果不仅揭示了当前电影市场的热门趋势,还为未来的电影产业发展提供了数据支持。

机器学习硕博工作室(计算机毕设)的博客 1031

手把手教你用手机号注册的Apple ID成功登录Developer账户(避坑指南)

本文详细解析了使用手机号注册的Apple ID登录开发者账户时常见的'不符合使用条件'报错问题,并提供了从添加可验证邮箱到设置主账号的四步解决方案。特别针对Apple Developer账户的验证机制,帮助开发者避免因邮箱缺失导致的登录失败,提升账户激活成功率。

z5a6b的博客 1215

python实例豆瓣代码_python爬取豆瓣视频信息代码

这里是爬取豆瓣视频信息,用pyquery库(jquery的python库)。一:代码from urllib.request import quotefrom pyquery import PyQuery as pqimport requestsimport pandas as pddef get_text_page(movie_name):'''函数功能:获得指定电影名的源代码参数:电影名返回值:...

weixin_39950764的博客 287

GB28181协议心跳机制:从标准解读到代码实现的保活策略

本文深入解析GB28181协议中的心跳机制,从标准解读到代码实现,详细介绍了保活策略的核心价值和底层逻辑。通过实战案例和技术要点,帮助开发者优化心跳间隔、超时次数等参数配置,提升安防监控系统的可靠性和性能。文章还提供了代码实现的防坑指南和特殊场景处理建议,适用于各类网络环境下的设备在线状态管理。

weixin_29611239的博客 103

基于Java的高校校园点餐系统

本文介绍了一个基于Java技术开发的高校校园点餐系统,该系统以B/S结构为基础,采用MySQL作为数据库,实现了一个高效、便捷的在线点餐平台。系统主要面向三类用户:管理员、用户和食堂工作人员,提供包括用户管理、食堂管理、菜单管理、订单管理等在内的多项功能。通过系统的具体测试,验证了其可行性和有效性,为高校师生提供了一个科学化、系统化的点餐服务。高校校园点餐系统的开发和实现,不仅提高了校园餐饮服务的效率和质量,也为师生提供了一个更加便捷的点餐体验。

a632341031的博客 837

腾讯视频电影信息爬取(scrapy框架下采用MySQL数据库)

一、准备  1.cmd 命令行 pip install pymysql,pip install lxml,pip install requests  2.创建scrapy项目并进行MySQL数据库配置  具体配置过程可见转载博客:http://blog.youkuaiyun.com/qq_31518899/article/details/76576537 Scrapy连接MySQL数据库

SunChao3555的博客 2064

Python爬虫实战:高效爬取Vimeo高清视频

在当今数字化时代,视频内容已成为互联网的重要组成部分。Vimeo作为一个高质量的视频分享平台,拥有大量优质视频资源。然而,Vimeo并未提供直接下载视频的选项,因此,我们需要借助Python爬虫技术来获取这些高清视频。(HTTP Live Streaming)格式存储。Vimeo的视频通常不会直接暴露。Vimeo的视频通常以。

2201_76125261的博客 427

XPath之电影天堂数据爬取

  2019.5.19,今天写这个实例写了几个小时,虽然不多,100行代码左右,但是貌似是学python以来代码写得最多的一次了。 主要是看了这个视频https://www.bilibili.com/video/av51650499?from=search&seid=10478614069026676839 然后自己尝试写了一下,大部分都能写出来,就是最后获取“主演”和“简介”的时候不...

weixin_30820151的博客 1368

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Python 爬取 B 站 5000 条视频,揭秘为何千万人为它流泪!

这个夏天,《哪吒之魔童降世》碾压其他暑期档电影,成为最强黑马。我身边的朋友,不是已经N刷了这部电影,就是在赶去N刷的路上。从票房上也可窥见一斑: 数据爬取 在浏览器开发者模式CTRL+F很容易就能找到所需要的信息,就在页面源码中: 因此我们用beautifulsoup库就能快速方便地获取想要的信息啦。 因为B站视频数量有限定,每次搜索只能显示20条*50页=1000个视频信息。 为了尽可能多...

人生苦短, 还不用Python? 1248

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Python爬取哪吒2电影(2025最新详细版)

这是一个适用于小白的Python爬虫免费教学课程,只有7节,让零基础的你初步了解爬虫,跟着课程内容能自己爬取资源。看着文章,打开电脑动手实践,平均45分钟就能学完一节,如果你愿意,今天内你就可以迈入爬虫的大门啦~好啦,正式开始我们的第二节课《爬取豆瓣电影信息》吧!啦啦哩啦啦,都看黑板~咳咳~ 还是用一个具体的例子,来说明吧!爬虫获取网页信息和人工获取信息,其实原理是一致的,比如我们要获取电影的“评分”信息: 这里我们用豆瓣电影吧 人工操作步骤: 1. 获取电影信息的页面 2. 定位(找到)到评分信息的位置

GuoWes代码的博客 2138

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

如何解决猫眼电影数据爬取和可视化难题?了解Python爬虫与k-means算法的最佳实践,优化你的数据分析过程

如何解决猫眼电影数据爬取和可视化难题?了解Python爬虫与k-means算法的最佳实践,优化你的数据分析过程

计算机毕设工坊 1946

基于python+django的电影票房爬取与可视化系统大数据分析系统(源代码+文档+讲解视频)

在影视产业蓬勃发展的当下,电影票房数据作为衡量影片市场表现的核心指标,其价值日益凸显。随着各类电影票务平台、行业资讯网站、社交媒体的兴起,票房相关数据呈现出多源化、实时化、海量性的特点,涵盖影片实时票房、排片率、上座率、观众评分、影评反馈以及不同地区、不同时段的票房分布等丰富信息。然而,当前电影行业在票房数据的获取与分析方面存在诸多痛点:一方面,票房数据分散在多个平台,格式不统一且更新速度快,手动收集不仅效率低下,还易出现数据遗漏或错误,难以实现对数据的全面、及时掌控;另一方面,传统的票房分析多停留在简单的

专注于大学生项目实战开发,讲解,毕业答疑辅导,java就业辅导,高校老师/讲师/同行合作。以及产品测评宣传、工具推广等合作。全网粉丝10w+,平台优质java、小程序创作者。 986

教你用BeautifulSoup实现数据解析,并爬取豆瓣TOP250电影榜

这三个库的详细用法,请看我的其他视频课程。

weixin_44976611的博客 952

Python爬虫新手入门教学(十六):爬取好看视频小视频

前言 本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。 Python爬虫、数据分析、网站开发等案例教程视频免费在线观看 https://space.bilibili.com/523606542 前文内容 Python爬虫新手入门教学(一):爬取豆瓣电影排行信息 Python爬虫新手入门教学(二):爬取小说 Python爬虫新手入门教学(三):爬取链家二手房数据 Python爬虫新手入门教学(四):爬取前程无忧招聘信息 Pyth.

Python案例分享,B站视频教程:https://space.bilibili.com/523606542 1235

[python爬虫]爬取电影天堂连接

导包 import requests,re,chardet,pymysql from piaot import * 获取首页一共有多少个分类 def shoye(): url='http://www.dytt8.net/html/gndy/dyzz/index.html' headers={ "User-Agent":pa() } req=r...

Black_God1的博客 3574
上一篇: 批量爬取变形金刚图片保存到本地。
下一篇: Python 骚操作——邮件转微信
pythonputao
博客等级 码龄6年 60粉丝 111原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值