Apriori是常用的关联规则挖掘方法之一, 本例为关联规则挖掘实战练习, 通过python自动化爬虫抓取豆瓣电影中某导演的电影名和演员, 通过apriori算法看出来其选择演员的倾向。

一. 网络爬虫

本例选择冯小刚导演为分析对象, 先进入豆瓣搜索冯小刚, 分析带爬取的网页:

1. url分析

首页网址为:

https://movie.douban.com/subject_search?search_text=冯小刚&cat=1002&start=0

第二页网址为:

https://movie.douban.com/subject_search?search_text=冯小刚&cat=1002&start=15

在查看之后需要爬取的网址, 可以确定网页变化的规律为, 每翻一页'start=' 后面的数字增值15, 其他不变.

2. 页面模块分析

除首页有16条数据(首页页首多出导演介绍)和末页以外, 其他页均包含15条数据, 通过对源代码分析, 可用Xpath定位每条数据的电影名和演员表, 其中演员表第一位为导演名, 由于网页中存在冯小刚不导演但参演的电影, 如"功夫", 所以可以通过第一位筛除不是冯小刚导演的电影.

首页

第二页

利用python中的selenium自动化工具, 通过火狐浏览器爬取冯小刚导演的电影名及演员信息, 遇到某页信息不足15条时判定为末页, 在末页爬取完毕或爬取完10000条电影数据后结束自动化爬取, 同时把数据写入本地'冯小刚.csv'文件, 在写入时, 用相应电影名代替导演名, 得到全部'电影-演员'数据.

爬虫代码:

# -*- coding:utf-8 -*-
from lxml import etree
from selenium import webdriver
import time
import csvdriver = webdriver.Firefox()
# 设置想要下载的导演 数据集
director = '冯小刚'
# 写CSV 文件
file_name = './' + director + '.csv'
base_url = 'https://movie.douban.com/subject_search?search_text=' + director + '&cat=1002&start='
out = open(file_name, 'w', newline='', encoding='utf-8-sig')
csv_write = csv.writer(out, dialect='excel')# 下载指定页面的数据
# 定义每页抓取函数
def download(request_url):driver.get(request_url)time.sleep(1)html = driver.find_element_by_xpath("//*").get_attribute("outerHTML")html = etree.HTML(html)# 设置电影名称,导演演员 的 XPATHmovie_lists = html.xpath("/html/body/div[@id='wrapper']/div[@id='root']/div[1]//div[@class='item-root']/div[@class='detail']/div[@class='title']/a[@class='title-text']")name_lists = html.xpath("/html/body/div[@id='wrapper']/div[@id='root']/div[1]//div[@class='item-root']/div[@class='detail']/div[@class='meta abstract_2']")# 获取返回的数据个数num = len(movie_lists)if num > 15:        # 第一页会有 16 条数据,其中第一条为导演介绍 需要去掉movie_lists = movie_lists[1:]name_lists = name_lists[1:]for (movie, name_list) in zip(movie_lists, name_lists):# 会存在数据为空的情况if name_list.text is None:continue# 显示下演员名称print(name_list.text)names = name_list.text.split('/')# 判断导演是否为指定的 directorif names[0].strip() == director:# 将第一个字段设置为电影名称names[0] = movie.textcsv_write.writerow(names)print('OK')  # 代表这页数据下载成功if num >= 15:# 继续下一页return Trueelse:# 没有下一页return False# 设置开始的ID为0,每页增加 15
start = 0
while start < 10000:  # 最多抽取1万部电影request_url = base_url + str(start)# 下载数据,并返回是否有下一页flag = download(request_url)if flag:start = start + 15else:break
out.close()
print('finished')

打印信息:

爬取数据文件截图:

冯小刚.csv

在文件中可以看到, 冯小刚导演的非电影型节目, 如"2014年中央电视台春节联欢晚会" 也被爬取并存入了文件, 在此手动删除了第20、24、25、26行非电影型数据.

二. 关联分析

python中的第三方工具包efficient_apriori提供了apriori算法关联规则分析, 通过传入list类型数据, 最小支持度和最小置信度参数, 可获得相应的频繁项集和关联规则.

首先读取.csv文件, 对演员名进行去空格处理后生成每个电影的演员名列表, 最后使用efficient_apriori中的apriori方法得到频繁项集itemsets和关联规则rules.

关联规则代码:

# -*- coding: utf-8 -*-
from efficient_apriori import apriori
import csvdirector = '冯小刚'
file_name = './'+director+'.csv'
lists = csv.reader(open(file_name, 'r', encoding='utf-8-sig'))
# 数据加载
data = []
for names in lists:name_new = []for name in names:name_new.append(name.strip())    # 去掉演员数据中的空格data.append(name_new[1:])      # 去掉电影名, 加入列表# 挖掘频繁项集和关联规则
itemsets, rules = apriori(data, min_support=0.15,  min_confidence=1)
print(itemsets)
print(rules)

通过调整最小支持度和最小执行度, 在最小支持度为0.15, 最小置信度为1, 得到如下结果:

由此可以得到, 冯小刚导演比较喜欢用的演员是张国立, 徐帆, 葛优, 且在张国立参演时, 徐帆一般也会参演此电影.

PS: 由于豆瓣电影爬取网页中有包含某中间页数据不足15条的情况, 如张艺谋导演第三页只有14条,

在自动化爬取中需要灵活调整代码第48行 if num >= 15:  的数值, 使爬取信息得以完全.

相关数据及请点击: GitHub

[DA45] 使用apriori分析导演选择演员倾向相关推荐

  1. 电影分析案例-分析导演、演员拍电影盈利和票房(2021/07/25)

    次案例主要是对数据计算的应用. 如题,数据还是movie数据,分别通过以下指标分析导演和演员的盈利能力 1.计算导演的总票房gross,排名 2.计算导演的总利润gross-budget,排名 3.筛 ...

  2. KMEANS均值聚类和层次聚类:亚洲国家地区生活幸福质量异同可视化分析和选择最佳聚类数...

    阅读全文:http://tecdat.cn/?p=24198 <世界幸福报告>是可持续发展解决方案网络的年度报告,该报告使用盖洛普世界民意调查的调查结果研究了150多个国家/地区的生活质量 ...

  3. 信用卡评分模型(数据获取+数据预处理+探索分析+变量选择+模型开发+模型评估+信用评分+建立评分系统)

    最近两次遇到关于信用卡评分的题目,遂了解一波. Reference: 基于python的信用卡评分模型(超详细!!!) https://www.jianshu.com/p/f931a4df202c h ...

  4. 手机卡计费方式的分析与选择

    教    材:    高等教育出版社中等职业教育国家规划教材 <数学>(提高版)第三章函数 授课教师:    云南省昆明市财经商贸学校    张映芳 一.教学内容的地位 本课题是在学习了函 ...

  5. Python使用Apriori算法分析导演请某演员后还会请哪个演员

    前导课程: Python使用Apriori算法查找关系密切的演员组合 技术要点: 1)根据演员关系以及常见组合,分析某导演请了某个演员之后还可能会请哪个演员参演. 可以继续的工作: 多级关联规则,例如 ...

  6. 《诛仙》大量实景拍摄 程小东导演:演员状态自然

    中新网1月29日电 近日,由萧鼎同名小说改编,程小东执导的电影<诛仙>宣布杀青,片方发布超先导海报,曝光该片领衔主演肖战.李沁.孟美岐和特邀主演唐艺昕的主创阵容,并正式定档8月8日. 海报 ...

  7. 内排序及时间复杂度分析-插入排序选择排序交换排序归并排序分配和索引排序对比...

    基本概念 什么是排序? 排序 将序列中的记录按照排序码顺序排列起来 排序码域的值具有不减(或不增)的顺序 内排序 整个排序过程在内存中完成 给定一个序列 R = { r1, r2, ...,rn } ...

  8. jsp 选择时分秒控件_【最全】9月计算机考试报名通知(6.19更新,仅差4省市)附:分析如何选择科目...

    2019年全国计算机等级考试报名资讯汇总篇 2019年9月第56次全国计算机等级考试 考试时间:9月21-23日考试 各省市报名时间:6月-7月30日,每个省市自行组织,时间不一样,具体请看下方资讯? ...

  9. 计算机网络拓扑结构课件,计算机网络拓扑结构的分析及选择

    [摘要]计算机网络拓扑结构已经成为当前计算机.网络设备及媒介传输之间的关键结构,对我国当前的计算机网络发展具有非常重要的作用.本文就当前的计算机网络拓扑结构概念进行全面分析,对星型拓扑结构.总线型拓扑 ...

最新文章

  1. Fastlane- app自动编译、打包多个版本、上传到app store
  2. IBM确定公司未来存储技术发展方向
  3. android 定位服务 耗电吗,关于Android的定位服务
  4. Qt5.9使用QWebEngineView加载网页速度非常慢,问题解决
  5. 数理统计-5.4 三大抽样分布
  6. 【Python图像特征的音乐序列生成】解析ABC格式的文件(修改版)
  7. java策略_java策略模式
  8. 神经网络训练输入数据并行化
  9. 凸优化第五章对偶 5.3 几何解释
  10. 自定义吐司Toast小进阶
  11. linux 网卡序列号,linux查看网卡地址和硬盘序列号
  12. 机器学习之微积分零基础学习
  13. 扫盲:什么是steam令牌验证器?哪些行为会触发steam交易限制
  14. Servlet 实现上传附件(支持多附件)
  15. 突破电信80端口封锁,用CDN架设公司服务器!
  16. 隔离太无聊!不如用Python实现愤怒的小鸟,看看能否通关!
  17. 360惊天后门曝光:“盗梦盒子”重现江湖
  18. 清空RMON统计的数据
  19. 如何在 Windows 中快速查找文档
  20. springboot打包docker镜像部署

热门文章

  1. NEFU 155 超弦(插头DP)
  2. 如何做好企业级存储产品的测试
  3. 常用数据集预处理(dota)
  4. steam游戏的计算机要求,steam游戏怎么看配置是否符合,steam不要求配置的游戏
  5. 2023年最热门的网络安全岗位分析
  6. AMD授权X86技术给中国,养虎为患还是另有所谋?
  7. 全景分割相关论文写作与准备笔记
  8. 全球营商环境报告及数据(2004-2020年)
  9. 让Oracle高效并行执行的13个必备知识点
  10. ppt怎么制作抖音快手快闪效果的倒计时动画?