Python对豆瓣电影Top250并进行数据分析

由于CSDN审核机制,导致原文章无法发出,故修改了相关词汇,并改为两篇问章发布。

数据获取

翻页操作

在这里插入图片描述

观察可知,我们只需要修改start参数即可

headers字段

headers中有很多字段,这些字段都有可能会被对方服务器拿过来进行判断是否为爬虫

通过headers中的User-Agent字段来

  • 原理:默认情况下没有User-Agent,而是使用模块默认设置
  • 解决方法:请求之前添加User-Agent即可;更好的方式是使用User-Agent池来解决(收集一堆User-Agent的方式,或者是随机生成User-Agent)

在这里我们只需要添加请求头即可

数据定位

这里我使用的是xpath

# -*- coding: utf-8 -*-
# @Author: Kun
import requests 
from lxml import etree
import pandas as pd
df = []
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4343.0 Safari/537.36','Referer': 'https://movie.douban.com/top250'}
columns = ['排名','电影名称','导演','上映年份','制作国家','类型','评分','评价分数','短评']
def get_data(html):xp = etree.HTML(html)lis = xp.xpath('//*[@id="content"]/div/div[1]/ol/li')for li in lis:"""排名、标题、导演、演员、"""ranks = li.xpath('div/div[1]/em/text()')titles = li.xpath('div/div[2]/div[1]/a/span[1]/text()')directors = li.xpath('div/div[2]/div[2]/p[1]/text()')[0].strip().replace("\xa0\xa0\xa0","\t").split("\t")infos = li.xpath('div/div[2]/div[2]/p[1]/text()')[1].strip().replace('\xa0','').split('/')dates,areas,genres = infos[0],infos[1],infos[2]ratings = li.xpath('.//div[@class="star"]/span[2]/text()')[0]scores = li.xpath('.//div[@class="star"]/span[4]/text()')[0][:-3]quotes = li.xpath('.//p[@class="quote"]/span/text()')for rank,title,director in zip(ranks,titles,directors):if len(quotes) == 0:quotes = Noneelse:quotes = quotes[0]df.append([rank,title,director,dates,areas,genres,ratings,scores,quotes])d = pd.DataFrame(df,columns=columns)d.to_excel('Top250.xlsx',index=False)
for i in range(0,251,25):url = "https://movie.douban.com/top250?start={}&filter=".format(str(i))res = requests.get(url,headers=headers)html = res.textget_data(html)

生成的数据保存在Top250.xlsx中。


  • 使用面向对象+线程
# -*- coding: utf-8 -*-
"""
Created on Tue Feb  2 15:19:29 2021@author: 北山啦
"""
import pandas as pd
import time
import requests
from lxml import etree
from queue import Queue
from threading import Thread, Lockclass Movie():def __init__(self):self.df = []self.headers ={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4343.0 Safari/537.36','Referer': 'https://movie.douban.com/top250'}self.columns = ['排名','电影名称','导演','上映年份','制作国家','类型','评分','评价分数','短评']self.lock = Lock()self.url_list = Queue()def get_url(self):url = 'https://movie.douban.com/top250?start={}&filter='for i in range(0,250,25):self.url_list.put(url.format(str(i)))def get_html(self):while True:if not self.url_list.empty():url = self.url_list.get()resp = requests.get(url,headers=self.headers)html = resp.textself.xpath_parse(html)else:break   def xpath_parse(self,html):xp = etree.HTML(html)lis = xp.xpath('//*[@id="content"]/div/div[1]/ol/li')for li in lis:"""排名、标题、导演、演员、"""ranks = li.xpath('div/div[1]/em/text()')titles = li.xpath('div/div[2]/div[1]/a/span[1]/text()')directors = li.xpath('div/div[2]/div[2]/p[1]/text()')[0].strip().replace("\xa0\xa0\xa0","\t").split("\t")infos = li.xpath('div/div[2]/div[2]/p[1]/text()')[1].strip().replace('\xa0','').split('/')dates,areas,genres = infos[0],infos[1],infos[2]ratings = li.xpath('.//div[@class="star"]/span[2]/text()')[0]scores = li.xpath('.//div[@class="star"]/span[4]/text()')[0][:-3]quotes = li.xpath('.//p[@class="quote"]/span/text()')for rank,title,director in zip(ranks,titles,directors):if len(quotes) == 0:quotes = Noneelse:quotes = quotes[0]self.df.append([rank,title,director,dates,areas,genres,ratings,scores,quotes])d = pd.DataFrame(self.df,columns=self.columns)d.to_excel('douban.xlsx',index=False)def main(self):start_time = time.time()self.get_url()th_list = []for i in range(5):th = Thread(target=self.get_html)th.start()th_list.append(th)for th in th_list:th.join()end_time = time.time()print(end_time-start_time)
if __name__ == '__main__':spider = Movie()spider.main()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/63548.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

你知道豆瓣电影是怎么评分的吗?

「关注我,和我一起放下灵魂,让灵魂去搬砖。」 作者:小一 介绍:放不下灵魂的搬砖者 全文共6673字,阅读全文需17分钟 Python版本3.8.0,开发工具:Pycharm 写在前面的话: 如果你是因为看…

豆瓣电影TOP250数据分析

本文使用的语言为Python, 用到的几个模块有:BeautifulSoup(爬数据),pandas(数据处理),seaborn(可视化),部分图表由Tableau生成。 1. 数据获取 计划要抓取的…

豆瓣高分电影信息分析(数据分析)

豆瓣高分电影信息分析(数据分析) 1、数据抓取 数据集的获取是我们进行数据分析的第一步。现在获取数据的主要途径一般为:现成数据;自己写爬虫去爬取数据;使用现有的爬虫工具爬取所需内容,保存到数据库&am…

豆瓣电影评分分析(数据分析)

本文主要通过对豆瓣电影爬取的数据进行的简要分析,观察得出各部分之间对应的关系影响。 一.数据抓取 我们要想进行数据分析,首先就要通过爬虫对分析对象网页的数据爬取保存,可以保存到数据库或者文件形式到本地,这里我是保存在表…

人类禁止进入的“微博”,我的AI机器人在那里吹牛,“勾搭”AI小姑娘

最近球友推荐了一个非常有趣的网站,叫“奇鸟”(https://chirper.ai/zh)。 简单来说,这是一个AI专属的微博,人类禁止发言,但是你可以创建一个叫“奇鸟”的机器人代理,让它在里边发帖,…

OpenAI 的嵌入 API太慢了吗?探索其他嵌入模型和服务的优势

这篇文章讨论了机器学习模型的延迟对聊天应用和代理的用户体验的影响,重点关注了生成语言模型(LLM)的提示生成过程中的语义搜索任务。文章比较了两种嵌入API 服务(OpenAI 和 Google)和几种开源嵌入模型(sen…

chatgpt赋能python:Python怎么Import自己写的SEO文章

Python怎么Import自己写的SEO文章 如果你是一位Python开发人员,并且正在为SEO优化而努力编写文章,那么你可能会想知道如何将自己编写的SEO文章导入您的程序中以便更好的利用。 在这篇文章中,我们将介绍如何使用Python中的import语句将自己编…

什么是全景地图?

如果问什么是全景图,那应该很多人都能回答上来。那么要是问什么是全景地图,估计很多人就不清楚了。然而我们在想要知道全景地图是怎么做的时候,就必须要知道什么是全景地图,那么这篇文章就告诉大家什么是全景地图。 全景地图也经…

全景图为何如此受欢迎/

为何全方位全景和720度全景这般受欢迎?今日我来给各位朋友科谱答疑解惑:说白了3d全景,便是运用全景和虚拟现实技术技术性,在互联网技术完成可720度无死角收看的呈现方式。从现阶段的实例来讲,3d全景除开在游戏娱乐行业得到巨大的…

教你一招,如何将vr网站中的360全景图图片和全景漫游文件下载到本地电脑

如果你打开vr全景平台,看到好的作品想将360全景图片下载保存到本地,直接右键另存是下载不下来的,因为上传的图片已经过服务器端碎片化处理,在浏览器端访问时通过js脚本动态的加载碎片组合成全景漫游的效果,那么将全景图…

【案例】VR全景图:效果+源码

狠人话不多说,直接放视频效果地址 一、效果 1.视频效果 视频效果地址:点击这里 2.图片效果 二、构思 该怎么实现?页面如何布局页面是否可随意控制显示1.功能 控制页面显示数量可放大控制全景图+自动播放左右按钮控制上一页或下一页(尾页:下一页按钮隐藏,首页:上一页按…

web实现全景图的交互展示

Web实现全景图的交互展示 不需要学习其他知识,小白也能实现全景图AR展示一、webVR全景图多种方案实现(aframe,Krpano,three,jquery-vrview等等)二、用krpano之前的一些知识准备三、krpano的购买、下载、注册四、做一个…

全景图的获取以及HTML页面显示全景图

目录 前言 1. 使用全景相机拍摄 2.手机app拍摄 3.使用爬虫爬取 二、全景图显示 总结 前言 随着前端技术的不断发展,图像的展示越来越重要,本文就介绍了全景图获取与显示的基础内容。 一、全景图片获取方法 1. 使用全景相机拍摄 拍摄的图片在2维显示下…

PTGui+PS生成全景图

1.打开PTGui,加载影响,拖入需要生成的全景图文件 2.点击对齐影像 3.点击创建全景图片 4.把生成的全景图导入到PS, 由于生成的全景图天空是空缺的,需要使用PS修复 套索选中黑色区域,右击填充即可。如遇到内存不足&#…

百度全景图/内景图切换示例

先看效果&#xff1a; 外景图 内景图&#xff1a; 具体代码&#xff1a; <!DOCTYPE html> <html> <head><meta http-equiv"Content-Type" content"text/html; charsetutf-8" /><meta name"viewport" content&qu…

什么是全景图?如何进行vr全景图拍摄

照片可以记录生活中的精彩的片段&#xff0c;而且照片的种类也分为很多&#xff0c;比如人像图&#xff0c;美食图&#xff0c;风景图等&#xff0c;其中有一种照片称为大像素全景图&#xff0c;大像素是全景的一种比较超高清的全景图&#xff0c;他不仅可以保留vr全景技术的所…

自己制作并发布720°VR全景图

大疆内置的全景图不好用&#xff0c;导出就成了平面图了&#xff0c;只能在他的“天空之城”上看&#xff0c;很不方便&#xff0c;而且他的全景图像素降低了&#xff0c;所以我们要自己制作。 1、先用大疆或者其它设备拍一组全景照。 2、然后下载并安装“PTGui”软件&#xff…

浪潮信息Inspur KOS性能及稳定性位列前茅 与万里安全数据库GreatDB高效兼容

为满足企业在数据安全、产品可控等数字化转型中的多样化需求&#xff0c;浪潮信息正基于技术与应用的深厚积累&#xff0c;持续优化创新产品及服务能力&#xff0c;助力企业在数智化时代下构筑黑心竞争力。日前&#xff0c;浪潮信息打造的Inspur KOS V5与万里安全数据库软件Gre…

随便聊聊浪潮开务数据库

今天这个话题挺随意&#xff0c;我们来聊聊浪潮开务数据库&#xff0c;原因主要是我的微信朋友圈被这个数据库刷屏了。当然我对这款号称多模数据库的非开源数据库也很感兴趣&#xff0c;也有很多疑问&#xff0c;希望各位专家能帮忙答疑解惑&#xff0c;揭开这款即将发布的 Kai…