海报人脸个数与豆瓣电影评分的相关分析【python爬虫+人脸识别】

学习python有一段时间了,刚好有空自己搞一个案例练练手,于是诞生了这篇记录博。案例目的是研究电影海报上的人脸个数与这部电影豆瓣评分有没有一定的关系,当然这个分析结果不会有太大的商业效果,因为豆瓣评分不可控因素比较大,而且在人脸识别过程中还是有一定的偏差,这篇博文主要是记录在爬取电影海报中遇到的一些问题及解决方法,并且做法可能不是最简便的。
如有不对,欢迎指正。
下面进入正题。

step1:selenium+beautifulsoup爬取电影海报及评分

爬取的网页是豆瓣电影页面每一部电影的海报,如下
电影海报
本人爬虫新手,打算用urllib.request模块爬取海报链接,但是在返回的源码是不完整的,我能在网页上能找到海报链接的代码段,但是返回的源码并没有找到,百度之后发现这部分代码是js动态代码,我把它理解成反爬的一种形式,在广大网友的建议下选择selenium爬取。

1.1安装selenium+webdriver

selenium的安装很简单,打开anaconda prompt,输入pip install selenium搞定。
webdriver,因为我的Chrome浏览器版本为76,所以安装Chromedriver76.0.3809.x,选择win32版本就够了,适用于32位或64位。然后将chromedriver.exe放入Chrome.exe所在的目录,并且将这个目录加入环境变量。准备工作完成,下面正式进行爬取。上代码!

from bs4 import BeautifulSoup
from selenium import webdriver
import pandas as pd
browser = webdriver.Chrome() # Get local session of firefox
browser.get("https://movie.douban.com/explore#!type=movie&tag=%E7%83%AD%E9%97%A8&sort=recommend&page_limit=20&page_start=0") # Load page
# print(browser.page_source) 检查打印的源码确实包含了之前没有显示的那一部分,成功!

这段代码运行之后会自动用Chrome浏览器打开这个网址,然后你在这个网页上的操作都会被记录,最终的代码量取决于你什么时候停止对该网页的操作,比如这个网站有加载更多这个选项,如果你选择加载更多,就会有新的电影显示出来,那代码自然会增加,这也是动态爬取的一种意思,这也是selenium的强大之处
为了获取更多的数据,我爬取了300部电影,虽然样本量不算大,但是爬取也是需要时间的,更多的数据意味着要花更多的时间。

我们先来看看海报链接所在的代码段,阴影部分就是要爬取的,为了让自己知道是哪一部电影,把alt='xxxx’部分也爬取了,链接在img标签下,并且只有jpg格式的才是海报链接,所以爬取之后还需要筛选,上代码
海报代码

img_list = []  #建一个列表来保存海报链接
url_temp = browser.page_source
bs_obj = BeautifulSoup(url_temp,'html.parser',from_encoding='utf-8')
# print(bs_obj)
link_list = bs_obj.find_all('img')
for each in link_list:
    img_list.append(
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值