整体思路:利用requests,BeautifulSoup爬虫豆瓣电影分类排行榜数据;数据输出到本地csv文件;构建mongodb数据库,将数据存放入mongodb;利用pandas,matplotlib画图分析数据。

1.利用BeautifulSoup爬虫豆瓣电影分类排行榜数据

第一步:分析url规律,不同的电影分类对应url循环代入requests和BeautifulSoup中解析,再分析解析到的网站结构,提取想要的信息

获取电影分类的网页,传入函数douban中

分析网站结构,提取信息,并存放到对应的列表中

**这里踩了一个坑是for循环的范围,后来通过print S2列表发现长度不一,所以这里改成了range(len(s2))严谨一点(ip被封过一次,所以这里在请求头后面还加上了代理ip)

**由于电影类别不止一个,这里想把它们都放到dataframe中的同一列,所以用了.join合并。

2.数据输出到本地csv文件

3.文件保存mongodb数据库

4.画图数据分析

**这里由于某些电影是多个国家共同出品,国家这个列表的元素中可能还嵌入了列表,导致报错:列表类型不可哈希,为了程序简练一点,这里我直接取了电影国家的第一个元素,由于plot函数的x,y的维度需要一致,在x轴国家那里构造了集合与列表的嵌套样式。

调试最久的地方是在mean()函数那里,由于评分之前没有定义字符类型,导致评分的‘9.7’等元素的类型为‘str’,非数字类型,describe()函数中没有平均值属性

源代码如下

python源代码

import requests
from bs4 import BeautifulSoup
import json
import pandas as pd
import pymongo
import matplotlib.pyplot as plt
title_list=[]
lianjie_list=[]
rank_list=[]
leibie_list=[]
s2_list=[]
pingfen_list=[]
didian_list=[]
actors_list=[]
sum=0
#解析网页
headers={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36 Edg/90.0.818.66'}
def douban(urls):#针对不同分类不同链接,创建爬虫函数response=requests.get(urls,headers=headers,proxies={'http':'http://47.100.207.26:8080'})#获取网页soup=BeautifulSoup(response.text,'lxml')#解析网页s=soup.get_text()#去除网页标签,s为字符串格式,所以用json.loads变成python对象中的lists2=json.loads(s)#格式化,字符串格式变成集合格式list,方便提取数据s2_list.append(len(s2))for j in range(len(s2)):#循环处理集合元素中的信息s3=s2[j]#提取集合的第i个元素,此集合中的元素本质为字典title=s3.get('title')#提取电影题目title_list.append(title)rank=int(s3.get('rank'))#提取电影排名rank_list.append(rank)lianjie=s3.get('url')#提取电影链接lianjie_list.append(lianjie)leibie=s3.get('types')#提取电影类型leibie=''.join(leibie)leibie_list.append(leibie)pingfen=float(s3.get('rating')[0])#提取电影评分pingfen_list.append(pingfen)didian=s3.get('regions')[0]#提取电影国家,有的电影存在多个制作地点,为了方便后面plot,取第一个地点didian_list.append(didian)actors=s3.get('actors')#提取电影主演actors=''.join(actors)actors_list.append(actors)
for i in range(1,32):if i==31:urls='https://movie.douban.com/j/chart/top_list?type=31&interval_id=100%3A90&action=&start=0&limit=11'else:urls = 'https://movie.douban.com/j/chart/top_list?type={}&interval_id=100%3A90&action=&start=0&limit=50'.format(i)  # 观察豆瓣链接格式的编码规则,创建爬虫douban(urls)
dict={'题目':title_list,'分类排名':rank_list,'链接':lianjie_list,'电影类别':leibie_list,'评分':pingfen_list,'国家':didian_list,'演员':actors_list}
dt=pd.DataFrame(dict)#变成dataframe
dt.to_csv(r'C:\Users\asus\Desktop\douban.csv',mode='a')#导出到本地表格
for k in range(len(s2_list)):sum+=s2_list[k]
print('总条数:',sum)#记录抓取条数
#导入mongodb数据库
client=pymongo.MongoClient('mongodb://localhost:27017/')#链接mongodb数据库
db=client['dianying']#创建数据库dianying
db.collection.insert_one(dict)#数据库中插入字典型数据dict
#plot函数画图
print(list(set(dt['国家'])))
plt.plot(list(set(dt['国家'])),dt['评分'].groupby(dt['国家']).mean())
plt.title('各国电影评分')
plt.xlabel('国家分类')
plt.ylabel('评分')
plt.show()
print('运行完成')

python爬虫+数据分析完整流程--豆瓣电影分类排行榜相关推荐

  1. python爬取豆瓣电影top250_用Python爬虫实现爬取豆瓣电影Top250

    用Python爬虫实现爬取豆瓣电影Top250 #爬取 豆瓣电影Top250 #250个电影 ,分为10个页显示,1页有25个电影 import urllib.request from bs4 imp ...

  2. python爬虫实例教程之豆瓣电影排行榜--python爬虫requests库

    我们通过requests库进行了简单的网页采集和百度翻译的操作,这一节课我们继续进行案例的讲解–python爬虫实例教程之豆瓣电影排行榜,这次的案例与上节课案例相似,同样会涉及到JSON模块,异步加载 ...

  3. 豆瓣电影分类排行榜-剧情片-爬虫

    豆瓣电影分类排行榜 - 剧情片爬虫 Tips: 爬取的页面:https://movie.douban.com/typerank?type_name=%E5%89%A7%E6%83%85&typ ...

  4. python提取ajax异步加载数据_python爬取豆瓣电影分类排行榜引出的异步加载(AJAX)问题...

    1.背景 之前的文章中已经介绍过猫眼TOP100的电影信息爬取案例,网页每页有10条电影信息,通过翻页发现URL变化规律构造循环爬取10页100条全部电影信息.但是豆瓣电影分类排行榜的网页情况就所不同 ...

  5. 快来围观2W+的豆瓣电影分类排行榜(含代码)

    前言 之前向各位网友分享过一篇文章<[干货]-- 带你抓取并分析知乎高评分电影>,是关于如何从知乎网站中抓取经网友整理好后的电影信息,说白了是在网友汇总的基础上做了数据的爬虫工作.今天就来 ...

  6. Python大数据分析实战:豆瓣电影Top250中的最佳导演是谁?

    在之前写的一篇文中中,已经采用urllib和BeautifulSoup的方式抓取了豆瓣电影TOP250的导演.编剧.演员.上映时间和地区.语言.短评数.影评数.多少人想看.多少人看过等22个字段. 接 ...

  7. Python爬虫实例-爬取豆瓣电影Top250

    这是本人Python爬虫实例的第二个实例,不过想来好像没有很大的难度所以适合当做新手入门的第一个爬虫.放在这里供大家参考. 本次实例爬取的网站为豆瓣电影Top250,使用到的第三方库有urllib,B ...

  8. 爬虫自学day4:requests模块之爬取豆瓣电影分类排行榜

    豆瓣电影排行榜界面: 选择喜剧分类: 我们要爬取的数据是:电影名称.导演.演员.上映时间.国家等这些数据. 如何进行爬取: 这些信息是当前页面的局部信息,那么是否会遇到数据解析. 除了数据解析还可以使 ...

  9. 【Python爬虫】爬取豆瓣电影Top 250

    豆瓣电影 Top 250 导入第三方包 urllib模块介绍 引入模块 import urllib.request,urllib.parse,urllib.error 获取一个get请求 respos ...

  10. Python爬虫实战003:爬取豆瓣电影分类排行榜

    import requests import jsonif __name__ == '__main__':url = "https://movie.douban.com/j/chart/to ...

最新文章

  1. Postman status: 415_415亩!白云首宗农村土地规模化流转成功签约
  2. python执行语句转换成str_python3.x,_python3.4.3如何转换str字符串?,python3.x - phpStudy...
  3. dbms系统 rdbms_DBMS与传统文件系统之间的区别
  4. 我只是bug的搬运工之jsp 编辑预览时样式可以显示出来,而在浏览器浏览时无法显示出来!
  5. 全球人工智能发展白皮书
  6. MapGIS格式转ArcGIS方法
  7. 大数据培训课资源调度器详解
  8. 微信公众号token验证问题
  9. Python实例6: 贺卡制作
  10. python自动化操作浏览器
  11. js实现动态星空背景
  12. WPF 第三方控件主题库
  13. 【硬件】如何使用MOS管作为开关控制?如何看懂参数?如何MOS管选型?(从原理上分析)
  14. Python学习-列表的常见操作
  15. 座舱人机交互「暗潮汹涌」,语音「下」,多模态「上」
  16. 计算机二级学校错,计算机二级考不过,是有原因的!
  17. 【图神经网络】图神经网络(GNN)学习笔记:GNN的应用简介
  18. 三维GIS系统在城市发展中的应用
  19. SystemUI启动流程
  20. 中文分词入门之字标注法3

热门文章

  1. 三分钟带你了解DCMM
  2. Panoramic 控件设计举例
  3. 从程序员到项目经理(29):怎样写文档
  4. 9008 能 解锁BL_手机刷入面具及twrp教程(包含解bl锁教程)
  5. mysql精度_MySQL几种数据类型精度和标度的情况
  6. 谁将是互联网宝宝军团的最大劲敌?
  7. 微信小程序下载图片预览和真机调试均无问题,发布到远程后点击下载没有任何反应
  8. python并行编程 - GPU篇
  9. Could not fetch URL https://pypi.org/simple/pip/: There was a problem confirming the ssl certificat
  10. 综合评价之熵值法+TOPSIS