当前位置: 首页 > 编程日记 > 正文

爬取猫眼怦然心动电影评论

作业要求来源:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/3159


可以用pandas读出之前保存的数据:

newsdf = pd.read_csv(r'F:\duym\gzccnews.csv')

一.把爬取的内容保存到数据库sqlite3

import sqlite3
with sqlite3.connect('gzccnewsdb.sqlite') as db:
newsdf.to_sql('gzccnews',con = db)

with sqlite3.connect('gzccnewsdb.sqlite') as db:
df2 = pd.read_sql_query('SELECT * FROM gzccnews',con=db)

保存到MySQL数据库

  • import pandas as pd
  • import pymysql
  • from sqlalchemy import create_engine
  • conInfo = "mysql+pymysql://user:passwd@host:port/gzccnews?charset=utf8"
  • engine = create_engine(conInfo,encoding='utf-8')
  • df = pd.DataFrame(allnews)
  • df.to_sql(name = ‘news', con = engine, if_exists = 'append', index = False)

二.爬虫综合大作业

  1. 选择一个热点或者你感兴趣的主题。
  2. 选择爬取的对象与范围。
  3. 了解爬取对象的限制与约束。
  4. 爬取相应内容。
  5. 做数据分析与文本分析。
  6. 形成一篇文章,有说明、技术要点、有数据、有数据分析图形化展示与说明、文本分析图形化展示与说明。
  7. 文章公开发布。

我感兴趣的主题:最近重温怦然心动电影,爬取其评论

爬取对象:猫眼http://m.maoyan.com/movie/46818?_v_=yes&channelId=4&cityId=20&$from=canary#

获取的是猫眼APP的评论数据,如图所示::

通过分析发现猫眼APP的评论数据接口为:http://m.maoyan.com/review/v2/comments.json?movieId=46818&userId=-1&offset=0&limit=15&ts=0&type=3

多次观察发现:

只需要改变ts的值就能获取到数据,每次返回的数据的后端的ts就是下一页的ts,改变的就是offset和ts的值:

所以只需要更新offset的值就能获取每页的评论数据

代码实现:

2019/5/7

获取数据代码

from bs4 import BeautifulSoup
import requests
import json
import random
import time
import pandas as pdheaders = {'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.81 Mobile Safari/537.36',}
# url设置offset偏移量为0
url = 'http://m.maoyan.com/review/v2/comments.json?movieId=46818&userId=-1&offset=0&limit=15&type=3&ts={}'comment = []
nick = []
score = []
comment_time = []
gender = []
userlevel = []
userid = []
upcount = []
replycount = []
list_=[]
ji = 1
ts = 0 # 获取当前时间(单位是毫秒,所以要✖️1000)#offset最大值1005
for t in range(1000):url = 'http://m.maoyan.com/review/v2/comments.json?movieId=46818&offset={}&type=3'url_range = url.format(t)print(url_range)try:res = requests.get(url_range, headers=headers)res.encoding = 'utf-8'print('正在爬取第' + str(ji) + '')content = json.loads(res.text,encoding='utf-8')print(content)comments = content['data']['comments']except Exception as e:print("出错")count = 0for item in comments:comment.append(item['content'])nick.append(item['nick'])score.append(item['score'])count=count+1ji = ji+1print('=======================')ts= content['ts']print(content['ts'])print('=======================')time.sleep(3)
print('爬取完成')
print(ts)
print(comment)
print(score)
pd.DataFrame(nick).to_csv('bigdata.csv',encoding='utf_8_sig')
pd.DataFrame(comment).to_csv('neirong.csv',encoding='utf_8_sig')
pd.DataFrame(score).to_csv('pingfen.csv',encoding='utf_8_sig')

爬取到的数据:

整理数据:

# coding=utf-8# 导入jieba模块,用于中文分词
import jieba# 获取所有评论
import pandas as pd
# 读取小说
f = open(r'评论内容.csv', 'r', encoding='utf8')
text = f.read()
f.close()
print(text)
ch="《》\n:,,。、-!?0123456789"
for c in ch:text = text.replace(c,'')
print(text)
newtext = jieba.lcut(text)
te = {}
for w in newtext:if len(w) == 1:continueelse:te[w] = te.get(w, 0) + 1
tesort = list(te.items())
tesort.sort(key=lambda x: x[1], reverse=True)# 输出次数前TOP20的词语
for i in range(0, 20):print(tesort[i])
pd.DataFrame(tesort).to_csv('xin.csv', encoding='utf-8')

生成词云图:

大概从词云图可以推出,讲述一段美好的爱情小故事。

整理评分数据:

# coding=utf-8
fen=[]
# 获取评论中所有评分
with open('pingfen.csv', mode='r', encoding='utf-8') as f:row1=f.readlines()for row2 in row1:fen.append(row2.split(',')[1])print(row2)
print(fen)
zong=fen.__len__()
print(zong)
value=[fen.count('7\n'),fen.count('8\n'),fen.count('9\n'),fen.count('10\n')]
print(value)

十分好评的人数有477人,八九十分合起来有980人

整体而言,这部电影是非常值得大家观赏的一部好看的电影

评分人数的图表,从人数来看可以看出这是一部经典好电影。

转载于:https://www.cnblogs.com/Tqin/p/10775339.html

相关文章:

TCMalloc(Thread-Caching malloc) 基本设计原理

文章目录背景如何使用架构概览1. TCMalloc Front-end1.1 小对象和大对象的内存分配过程1.2 内存释放过程1.3 Per-CPU mode1.4 Per-thread mode1.5 per-cpu 和 per-thread 运行时内存管理算法对比2. TCMalloc Middle-end2.1 Transfer Cache2.2 Central Free List2.3 Pagemap 和 …

Java项目:控制台商城系统(java+打印控制台)

源码获取:博客首页 "资源" 里下载! 功能简介: 客户信息管理、商品信息管理、购物信息管理、退出系统 显示系统主菜单: public class SystemMenu {//显示系统主菜单public void showMainMenu(){System.out.println(&qu…

PAT (Basic Level) Practise (中文)-1025. 反转链表 (25)

PAT (Basic Level) Practise (中文)-1025. 反转链表 (25) http://www.patest.cn/contests/pat-b-practise/1025 给定一个常数K以及一个单链表L,请编写程序将L中每K个结点反转。例如:给定L为1→2→3→4→5→6,K为3&am…

初识Quartz(三)

为什么80%的码农都做不了架构师?>>> 简单作业: package quartz_project.example3;import java.util.Date;import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.quartz.Job…

内存分配器设计的演进

文章目录栈内存空间是否够用系统调用申请内存最简单的内存分配器实现 -- bump allocator可扩容的 Bump alloactor通过free-list 管理的 allocator通过size-buckets 维护多个free-list 的 allocatorCache friendly allocator需要考虑更多问题的allocator性能易用性本文希望描述一…

Android OpenGL ES(十一)绘制一个20面体 .

前面介绍了OpenGL ES所有能够绘制的基本图形,点,线段和三角形。其它所有复杂的2D或3D图形都是由这些基本图形构成。 本例介绍如何使用三角形构造一个正20面体。一个正20面体,有12个顶点,20个面,30条边构成:…

Java项目:学生选课系统(java+javaweb+jdbc)

源码获取:博客首页 "资源" 里下载! 功能介绍: 用户菜单、学生管理、教师管理、课程管理、成绩排名查询 学生管理控制层: Controller RequestMapping("/student") public class StudentController {private …

Xtrabackup对mysql全备以及增量备份实施

Xtrabackup对mysql全备以及增量备份实施1.完全备份与恢复本文使用的是centos5.8 64位系统,mysql 使用5.5.35.如果要使用一个最小权限的用户进行备份,可基于以下:mysql> createuser bkuserlocalhost identified by redhat;mysql> grant …

js浅拷贝和深拷贝

浅度拷贝:复制一层对象的属性,并不包括对象里面的为引用类型的数据,当改变拷贝的对象里面的引用类型时,源对象也会改变。 深度拷贝:重新开辟一个内存空间,需要递归拷贝对象里的引用,直到子属性都…

关于 fallocate 文件系统预分配 的一些细粒度测试

文章目录Rocksdb 中的预分配Fallocate in rocksdb 性能测试Fallocate 使用 以及 对应配置的行为API 使用不同 Mode 的行为分配磁盘空间释放磁盘空间折叠/裁剪 文件内容清零文件 扩容文件Rocksdb 中的预分配 预分配文件存储空间 在存储引擎中用的还是比较频繁的,尤…

mac 使用nvm安装node

1.curl https://raw.github.com/creationix/nvm/master/install.sh | sh2。vi ~/.bash_profile 添加:source /Users/dujie/.nvm/nvm.sh nvm install 0.10.24 nvm use 0.10.24 # 默認使用 0.10.24 版本,否則每次關掉 Terminal 就得重新 nvm use 一次 $…

Java项目:人事管理系统(java+javaweb+jdbc)

源码获取:博客首页 "资源" 里下载! 功能介绍: 登录、新增、修改、离职 员工管理控制层: Controller RequestMapping("/employee") public class EmployeeController {Autowiredprivate IEmployeeService em…

转:async await 的前世今生 ; 异步 线程 多线程

写的非常好,改天搬过来

ubuntu14.04初体会

2014年4月17日ubuntu新的长期支持版14.04公布了,中国时间18日一早就能够下载到。18日晚。在我的X200上安装上了14.04,算是比較早一批体会到14.04正式版的人吧。对照12.04,14.04提升的执行速度非常明显,界面改善也是令人眼前一亮&a…

Linux 下获取本机所有网卡 以及 网卡对应ip 列表

简单record 一下 #include <arpa/inet.h> // struct sockaddr_in #include <errno.h> #include <net/if.h> // struct ifreq and struct if_nameindex #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/i…

Java项目:植物大战僵尸(java+swing)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; 功能简介&#xff1a; 植物大战僵尸、冒险模式、生存模式、解谜模式 小车服务类&#xff1a; public class CarThread extends Thread{private boolean flagtrue;private int x;private int y;private JL…

秋实大哥の恋爱物语

//裸kmp&#xff0c;劳资居然不会写&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 题意&#xff1a;中文题面自己看 解&#xff1a;差分裸kmp 因为可以上下移动&#xff0c;所以只要变化趋势相符就行&#xff0c;于是我们先做一个差分&#xff0c…

《马哥出品高薪linux运维教程》wingkeung学习笔记-linux基础入门课程5

命令&#xff1a;内部命令&#xff1a;由shell程序自带的命令叫做内部命令&#xff1b;外部命令&#xff1a;在系统的某个路径下&#xff0c;有一个与命令同名的可执行程序叫做外部命令。查看内外部命令的命令&#xff1a;type 命令命令选项&#xff1a;用于调整命令执行行为的…

八、LaTex中的表格

转载于:https://www.cnblogs.com/invisible2/p/10813964.html

基于持久内存的 单机上亿(128B)QPS -- 持久化 k/v 存储引擎

文章目录性能数据设计背景设计架构Hash 索引结构 及 PMEM空间管理形态基本API 及 实现API初始化流程写流程读流程删除流程PMEM Allocator设计主要组件空间分配流程空间释放图数据库 on KVDK 性能性能数据 这个kv 存储引擎是持久化的存储引擎&#xff0c;存储介质是PMEM&#x…

SCALA当的trait

不是特别懂&#xff0c;但感觉和RUBY当中的MIX-IN功能有几分相似&#xff0c;这又扯到了多重继承及JAVA当中的接口虚拟类了。。 package com.hengheng.scalaclass UseTrait {} trait Logger {def log(msg : String) {println("log : " msg)} } trait ConsoleLogger …

Java项目:贪吃蛇游戏(java+swing)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; 功能简介&#xff1a; 贪吃蛇游戏 大嘴鱼洁面类。完成大嘴鱼的界面的绘制: /*** 大嘴鱼洁面类。完成大嘴鱼的界面的绘制。*/ public class BigMouthFishFrame extends JFrame{private FishPool pool null;…

使用Ext Form自动绑定Html中的Form元素

2019独角兽企业重金招聘Python工程师标准>>> Java代码 //把ext 对象绑定在Html Form元素时的ext属性中 Ext.override(Ext.Component, { initComponent :function(){ this.on(render, function(){ if(this.el) Ext.getDom(this.el).ext this; …

Directx11 教程(2) 基本的windows应用程序框架(2)

Directx11 教程(2) 基本的windows应用程序框架(2) 原文:Directx11 教程(2) 基本的windows应用程序框架(2)在本教程中&#xff0c;我们把前面一个教程的代码&#xff0c;进行封装。把初始化函数&#xff0c;Run函数&#xff0c;窗口回调函数&#xff0c;ShutdownWindows函数等封…

Rocksdb的事务(二):完整事务体系的 详细实现

文章目录1. 基本事务操作1.1 TransactionDB -- Pessimistic1.2 OptimisticTransactionDB1.3 Read Uncommitted1.4 SavePoint 回滚部分事务操作1.5 SetSnapshot1.6 GetForUpdate1.7 RepeatableRead2. 实现2.1 WBWI(write batch with index) & WB(write batch)2.2 Pessimisti…

关于学习编程的一些看法

1、看书&#xff0c;书上的代码一串一串的对吧&#xff1f;是不是很不好记&#xff1f;是不是觉得如果自己把这些代码都敲一遍很浪费时间&#xff1f;其实对于一些完全没有任何基础的人来说&#xff0c;全部敲一遍不失为一种简单的入门方法。对于有一点基础的人来说&#xff0c…

Java项目:日历万年历(java+swing)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; 功能简介&#xff1a; 万年历 启动类&#xff1a; public class CalendarMainClass { public static void main(String args[]) { try { UIManager.setLookAndFeel("com.sun.java.swing.pl…

求大神给解释一下H3C ospf 双塔奇兵

转载于:https://blog.51cto.com/2807200/1364566

活着是为了什么?

活着是为了死亡&#xff0c;死亡才是完美&#xff0c;才是永恒。 死亡时将一无所有&#xff0c;所以活着不是为了能带走什么&#xff0c;而应该是能留下什么&#xff0c;这才是人活着的意义&#xff0c;多少人能想明白呢&#xff1f; 胡建龙转载于:https://www.cnblogs.com/hjl…

XFS 文件系统 (一) :设计概览

文章目录0 前言1 设计背景2. 需要解决的问题2.1 异常恢复太慢2.2 不支持大文件系统2.3 不支持大型稀疏文件2.4 不支持大型连续文件2.5 不支持大目录2.6 不支持过多文件个数3 XFS 架构4 痛点解决4.1 Allocation Groups4.2 Manging Free Space4.3 大文件的支持5 总结0 前言 虽然…