'''

爬取豆瓣电影排行榜

设计思路:

1、先获取电影类型的名字以及特有的编号

2、将编号向ajax发送get请求获取想要的数据

3、将数据存放进excel表格中

'''

环境部署:

软件安装:

Python 3.7.6

PyCharm 2020.2.2 x64 位

模块安装(打开cmd或powershell进行下面的命令安装【前提需要有python】):安装requests模块、lxml模块(发送请求,xpath获取数据)

pip install requests #(主要用来发送请求,获取响应)

pip install lxml #(主要引用里面的etree里面的xpath方法)

安装xpathhelper插件(可以在网页中复制相应的节点xpath路径并查看)

1、下载地址:

提取码: fmsu

2、window平台下:

· 把文件的后缀名crx改为rar,然后解压到同名文件夹中

· 打开谷歌的扩展程序 ——> 进入到管理管理扩展程序中

· 打开开发者模式,通过加载已解压的扩展程序,将插件导入

3、ios平台下:

· 直接将crx文件拖进扩展程序中

安装xlwt模块(将数据存放进excel表格)

pip install xlwt

项目中需要引入的模块:

import requests

from lxml import etree

import xlwt

import time

使用流程:

在列表中填写所需要获取的电影类型名

输入开始时获取的start以及获取多少数据的limit

填写所要输出的excel表格的名字(代码中默认douban.xls)

程序运行结束后打开excel验证数据是否获取

观察自己所需的数据

完整代码:

# encoding=utf8

# 编程者 :Alvin

'''

爬取豆瓣电影排行榜

设计思路:

1、先获取电影类型的名字以及特有的编号

2、将编号向ajax发送get请求获取想要的数据

3、将数据存放进excel表格中

'''

import requests

from lxml import etree

import xlwt

import time

class DouBan():

# 初始化数据,获取最外层的数据

def __init__(self, name_list):

self.headers = {

"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.3",

"Connection": "close",

"Referer": "https://movie.douban.com/"

}

# 获取最外层的数据,并拿到url中的type中的name 和 类型

self.url = 'https://movie.douban.com/chart'

self.dydata_list = []

# 电影的类型名

self.name_list = name_list

# 实例化excel表格对象

self.wb = xlwt.Workbook()

# 通过电影的类型名字获取对应的类型号

def get_data_typenum(self, name):

for data in self.dydata_list:

if data['name'] == name:

typenum =data['dytype']

else:

continue

return typenum

# 获取数据

def get_data_p1(self):

response = requests.get(self.url , headers = self.headers)

# 判断长度是否足够大

# print(len(response.content.decode()))

return response.content.decode()

# 获取下一层的页面数据

def get_data_p2(self, typenum, num, limit):

url = 'https://movie.douban.com/j/chart/top_list'

params = {

'type': typenum,

'interval_id': '100:90',

'action':'',

'start': num*20,

'limit': limit

}

response = requests.get(url,params=params,headers=self.headers)

# print(response.json())

return response.json()

# 处理数据

def data_parse_p1(self, data):

html = etree.HTML(data)

data_list = html.xpath('//div[@class="types"]/span/a/@href')

# 用于收集类型名字

name_list = []

dytype_list = []

# 用于收集类型号

for data in data_list:

name = data.split('?')[-1].split('&')[0].split('=')[-1]

dytype = data.split('?')[-1].split('&')[1].split('=')[-1]

name_list.append(name)

dytype_list.append(dytype)

for (name,dytype) in zip(name_list,dytype_list):

dydict = {}

dydict['name'] = name

dydict['dytype'] = dytype

self.dydata_list.append(dydict)

# print(self.dydata_list)

return self.dydata_list

def data_parse_p2(self, data_list,name):

print(len(data_list))

douban = self.wb.add_sheet(name)

style = xlwt.XFStyle() # 初始化一个style对象,用来保存excel的样式

font = xlwt.Font() # 创建一个font对象,用来保存对字体进行的操作

font.name = '微软雅黑' # 字体设置为'微软雅黑'

font.bold = True # 字体加粗

al = xlwt.Alignment() # 创建一个对齐对啊想,用来改变文本内容的字体

style.font = font # 将字体信息保存到style对象中

style.alignment = al

# 水平对齐方式、水平居中

al.horz = 0x02

# 垂直对齐方式、垂直居中

al.vert = 0x01

# 电影的标题

douban.col(0).width = 256 * 25

# 电影演员的名字

douban.col(1).width = 256 * 50

# 电影上映的年份

douban.col(2).width = 256 * 15

# 电影上映的国家

douban.col(3).width = 256 * 15

# 电影的标签

douban.col(4).width = 256 * 20

# 电影的评分

douban.col(5).width = 256 * 8

# 豆瓣中该电影的页面链接

douban.col(6).width = 256 * 40

douban.write(0, 0, '电影标题', style)

douban.write(0, 1, '电影演员名字', style)

douban.write(0, 2, '电影上映年份', style)

douban.write(0, 3, '电影上映国家', style)

douban.write(0, 4, '电影标签', style)

douban.write(0, 5, '电影评分', style)

douban.write(0, 6, '豆瓣中该电影的页面链接', style)

row = 1

for data in data_list:

# 电影的标题

title = data['title']

# 电影演员的名字

actors = data['actors']

# 电影上映的年份

release_date = data['release_date']

# 电影上映的国家

regions = data['regions'][0]

# 电影的标签

types = data['types']

# 电影评分

score = data['score']

# 豆瓣查看的链接

link = data['url']

douban.write(row, 0, title)

douban.write(row, 1, actors)

douban.write(row, 2, release_date)

douban.write(row, 3, regions)

douban.write(row, 4, types)

douban.write(row, 5, score)

douban.write(row, 6, link)

row += 1

self.wb.save('douban.xls')

# 运行程序

def run(self, num, limit):

# 获取第一层中的所需要的类型名字和数字

self.data_parse_p1(self.get_data_p1())

for name in self.name_list:

typenum = self.get_data_typenum(name)

# 向指定的分类进行数据的访问

data_list = self.get_data_p2(typenum,num,limit)

# 对获取的数据进行解析保存

self.data_parse_p2(data_list,name)

if __name__ == '__main__':

# 需要查看的类型

douban = DouBan(['喜剧','悬疑','惊悚'])

# 需要查看的开始值start,以及需要查看的数量limit

douban.run(0,100)

time.sleep(2)

效果图pycharm 运行台

excel表格显示

本案例笔者的想法是打算先获取到每一个电影类型的前100个数据,然后在excel表格中进行评分的筛选,最后观察现阶段某个电影类型中哪些电影在豆瓣电影中评分较高的

到此这篇关于python爬取豆瓣电影排行榜(requests)的文章就介绍到这了,更多相关python爬取豆瓣电影内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

python爬取电影评分_python爬取豆瓣电影排行榜(requests)的示例代码相关推荐

  1. python爬虫豆瓣电影按电影类型_python爬虫之豆瓣电影评分

    想知道一部电影好不好看,豆瓣的评分还是比较靠谱的,于是,搞了搞,写了一个小爬虫: 好像csdn出现bug了,还是游览器的问题,图片插入不进去: 说明文档: 1.直接讲代码保存成.py文件 2.输入你喜 ...

  2. python中if else语句_python 中if else 语句的作用及示例代码

    引入:if-else的作用,满足一个条件做什么,否则做什么. if-else语句语法结构 if 判断条件: 要执行的代码 else: 要执行的代码 判断条件:一般为关系表达式或bool类型的值 执行过 ...

  3. python源码脚本实例_python编写一个会算账的脚本的示例代码

    python算账脚本 1.假如小明卡里有10000元去商场买东西发现钱不够又向父母借了5000账单如下 2.以下脚本就能实现上面的运算 from time import strftime import ...

  4. python爬取电影评分_Python爬取豆瓣高分电影前250名

    import requests import pymysql import time import re import xlwt from lxml import etree headers = {' ...

  5. python 柱状图上显示字体_Python爬取百部电影数据,我发现了这个惊人真相!

    2019年就这么匆匆过去了,就在前几天国家电影局发布了2019年中国电影市场数据,数据显示去年总票房为642.66亿元,同比增长5.4%:国产电影总票房411.75亿元,同比增长8.65%,市场占比 ...

  6. python爬取豆瓣电影评论_python 爬取豆瓣电影评论,并进行词云展示及出现的问题解决办法...

    def getHtml(url): """获取url页面""" headers = {'User-Agent':'Mozilla/5.0 ( ...

  7. python爬取王者皮肤_Python爬取王者荣耀英雄皮肤高清图片

    前言 临下班前,看到群里有人在讨论用王者农药的一些皮肤作为电脑的壁纸,什么高清的,什么像素稍低的,网上查了一手,也有,但像素都不一样,所以,我就想着,自己去官网直接爬他的高清皮肤就好了,然后就有了这边 ...

  8. python爬取地图地址_python爬取了高德地图一些地点的数据,爬出来数据大致情况如下:...

    python爬取了高德地图一些地点的数据,爬出来数据大致情况如下: 下面是基本流程: 1.注册成为高德地图API开发者,网址http://lbs.amap.com/(主要是获取自己的keywords ...

  9. python爬取百度标题_Python爬取百度热搜和数据处理

    一.主题式网络爬虫设计方案 1.主题式网络爬虫名称:爬取百度热搜 2.主题式网络爬虫爬取的内容与数据特征分析:百度热搜排行,标题,热度 3.主题式网络爬虫设计方案概述:先搜索网站,查找数据并比对然后再 ...

  10. python抓取微博评论_Python爬取新浪微博评论数据,你有空了解一下?

    开发工具 Python版本:3.6.4 相关模块: argparse模块: requests模块: jieba模块: wordcloud模块: 以及一些Python自带的模块. 环境搭建 安装Pyth ...

最新文章

  1. gtest简介及简单使用
  2. 求两个有序数组的中位数或者第k小元素
  3. android网络重试机制,okhttp源码解析(四):重试机制
  4. 传128GB版iPad4售价为799/929美元
  5. JS分页控件,可用于无刷新分页
  6. Django_ajax
  7. mysql数据库操作类
  8. sql int 比较_SQL进阶--错题集1
  9. 如何修改vue打包的名字_教你如何修改Mac的电脑名字
  10. 【万字长文】整理一份全套的机器学习资料!
  11. JavaScript之字符串函数
  12. 用友NC6x单点登录实现——跳转到浏览器或Uclient
  13. 酷派无线升级服务器设置在哪里,酷派手机CDA自助升级线刷工具安装教程
  14. 学生网站模板——我的家乡-云南(9页) HTML+CSS+JavaScript 关于我的家乡的HTML网页设计-----云南
  15. 极速扫描器 masscan
  16. 华为p50预计售价鸿蒙是什么,华为p50预计售价多少_华为p50售价预估
  17. 禧龙字王 v1.0 beta 4 服务器版 是什么
  18. winpe读取linux硬盘数据恢复,如何在WinPE环境下完成文件恢复
  19. 关于宇宙宿命论的一些思考
  20. IntelliJ IDEA 2018.3.3版本破解,亲测可用

热门文章

  1. 51nod 1548 欧姆诺姆和糖果【思维+分类讨论】
  2. 安卓如何实现图文混排
  3. 植物大战僵尸存档任务C1-01
  4. 类似vmlogin浏览器的有哪些?vmlogin,AdsPower,候鸟浏览器等防关联浏览器中同类型软件最强是哪一个?防关联指纹浏览器哪个好?
  5. angular directive 入门
  6. 联想笔记本无法开启无线网卡的方法
  7. oracle 增量导出 导入,Oracle增量导入导出
  8. 用以太坊区块链和jwt token保证Asp.Net Core的API交互安全(上)
  9. 学校无线网络覆盖方案
  10. kindle paper white部分优化