首页 > 编程语言 >【python爬虫案例】用python爬豆瓣电影TOP250排行榜!

【python爬虫案例】用python爬豆瓣电影TOP250排行榜!

时间:2023-06-29 17:00:52浏览次数:47  
标签:star python movie 爬虫 df 豆瓣 TOP250

一、爬虫对象-豆瓣电影TOP250

前几天,我分享了一个python爬虫案例,爬取豆瓣读书TOP250数据:【python爬虫案例】用python爬豆瓣读书TOP250排行榜!

今天,我再分享一期,python爬取豆瓣电影TOP250数据!

爬虫大体流程和豆瓣读书TOP250类似,细节之处见逻辑。

首先,打开豆瓣电影TOP250的页面:https://movie.douban.com/top250
豆瓣电影TOP250页面

开发好python爬虫代码后,爬取成功后的csv数据,如下:
结果数据

代码是怎样实现的爬取呢?下面逐一讲解python核心代码。

二、python爬虫代码讲解

首先,导入需要用到的库:

import requests  # 发送请求
from bs4 import BeautifulSoup  # 解析网页
import pandas as pd  # 存取csv
from time import sleep  # 等待时间

然后,向豆瓣电影网页发送请求:

res = requests.get(url, headers=headers)

利用BeautifulSoup库解析响应页面:

soup = BeautifulSoup(res.text, 'html.parser')

用BeautifulSoup的select函数,(css解析的方法)编写代码逻辑,部分核心代码:

for movie in soup.select('.item'):
	name = movie.select('.hd a')[0].text.replace('\n', '')  # 电影名称
	movie_name.append(name)
	url = movie.select('.hd a')[0]['href']  # 电影链接
	movie_url.append(url)
	star = movie.select('.rating_num')[0].text  # 电影评分
	movie_star.append(star)
	star_people = movie.select('.star span')[3].text  # 评分人数
	star_people = star_people.strip().replace('人评价', '')
	movie_star_people.append(star_people)

其中,需要说明的是,《大闹天宫》这部电影和其他电影页面排版不同:
大闹天宫

它的上映年份有3个(其他电影只有1个上映年份),并且以"/"分隔,正好和国家、电影类型的分割线冲突,

所以,这里特殊处理一下:

if name == '大闹天宫 / 大闹天宫 上下集  /  The Monkey King':  # 大闹天宫,特殊处理
	year0 = movie_infos.split('\n')[1].split('/')[0].strip()
	year1 = movie_infos.split('\n')[1].split('/')[1].strip()
	year2 = movie_infos.split('\n')[1].split('/')[2].strip()
	year = year0 + '/' + year1 + '/' + year2
	movie_year.append(year)
	country = movie_infos.split('\n')[1].split('/')[3].strip()
	movie_country.append(country)
	type = movie_infos.split('\n')[1].split('/')[4].strip()
	movie_type.append(type)

最后,将爬取到的数据保存到csv文件中:

def save_to_csv(csv_name):
	"""
	数据保存到csv
	:return: None
	"""
	df = pd.DataFrame()  # 初始化一个DataFrame对象
	df['电影名称'] = movie_name
	df['电影链接'] = movie_url
	df['电影评分'] = movie_star
	df['评分人数'] = movie_star_people
	df['导演'] = movie_director
	df['主演'] = movie_actor
	df['上映年份'] = movie_year
	df['国家'] = movie_country
	df['类型'] = movie_type
	df.to_csv(csv_name, encoding='utf_8_sig')  # 将数据保存到csv文件

其中,把各个list赋值为DataFrame的各个列,就把list数据转换为了DataFrame数据,然后直接to_csv保存。

这样,爬取的数据就持久化保存下来了。

三、同步视频

同步讲解视频:【python爬虫】利用python爬虫爬取豆瓣电影TOP250的数据!

四、获取完整源码

附完整源码:【python爬虫案例】利用python爬虫爬取豆瓣电影TOP250的数据!


我是 @马哥python说 ,持续分享python源码干货中!

标签:star,python,movie,爬虫,df,豆瓣,TOP250
From: https://www.cnblogs.com/mashukui/p/17514643.html

相关文章

  • python线程简单使用
    简单使用python定义多线程列子,供读者参考:在下面的示例中,我们定义了两个函数func1和func2,它们都将在新线程中运行。然后,我们使用threading.Thread构造函数创建了两个新线程,并将func1和func2函数作为目标。最后,我们启动了两个线程,并使用join方法等待它们结束。但需要注意的是,如......
  • python基础day35 Mixins机制和元类
    Mixins机制classVehicle:#交通工具passclassFlyMinix():deffly(self):'''飞行功能相应的代码'''print("Iamflying")'''1.主类:就是大部分都是主要的功能2.辅类:就是一些辅助的功能3.辅类的类名也......
  • python打包exe总结 pyinstaller py2exe
    Python打包exe有挺多可以用的如pyinstallerpy2exe cx_Freezenuitkapy2apppy0xidizer cx_Freeze和nuitka没用过py2app是打包Mac程序的py0xidizer是打包嵌入式的占用空间少感兴趣可以自行了解 这篇文章记录一下pyinstaller和py2exe的用法 以便以后查找  注:以下都......
  • npm install报gyp ERR! stack Error: Can't find Python executable "python", you ca
    1gypERR!stackError:Can'tfindPythonexecutable"python",youcansetthePYTHONenvvariable.2gypERR!stackatPythonFinder.failNoPython(/Users/scott/project/dx_project/front_project/workflow-frontend-elem/node_modules/node-......
  • Python Flask - 快速构建Web应用详解
    本文将详细探讨PythonFlaskWeb服务。我将首先简单介绍Flask,然后将逐步进入Flask中的路由、模板、表单处理以及数据库集成等高级概念,目标是能够让大家了解并掌握使用Flask来创建动态Web应用的技巧。1.Flask简介Flask是一个轻量级的Web服务器网关接口(WSGI)web应用框架。它被设计......
  • Python错误:requests请求https网站报错SSLError
    问题描述:用requests包请求https的网站时,经常会遇到证书问题,也就是常见的SSLerror:requests.exceptions.SSLError:HTTPSConnectionPool(host='www.xxx.com',port=443):Maxretriesexceededwithurl:xxx.html(CausedbySSLError(SSLCertVerificationError(1,'[S......
  • Python错误:requests请求设置verify=False时日志中有warning信息
    问题描述:在requests做请求的时候,为了避免ssl认证,可以将verify=False,但是这么设置会带来一个问题,日志中会有大量的warning信息,如下面:D:\ProgramFiles\Python\lib\site-packages\urllib3\connectionpool.py:1045:InsecureRequestWarning:UnverifiedHTTPSrequesti......
  • Manim基于python的数学可视化领域的佼佼者
    Manim是3Blue1Brown大佬为了制作数学动画而自己写的一个基于python的库作者:pdcxshttps://www.bilibili.com/read/cv3387999出处:bilibili数学可视化领域的佼佼者。通过Manim,你可以用编程的方式生成精确的数学视频。Manim’sdocumentationhttps://3b1b.github.io/manim/index.......
  • 【Python&RS】基于GDAL镶嵌拼接遥感影像
    ​    没啥好说的,处理高分辨率影像时,数据高达几十G。用ENVI或者ArcGIS进行影像的拼接时,往往会出现未响应的情况。出现未响应的话,运气好等个一晚上可能会动一动,运气不好就等着强制关闭重做吧。        所以搞了一个Python进行拼接操作的代码,虽然速度不算快,但至......
  • 【python爬虫案例】用python爬豆瓣读书TOP250排行榜!
    目录一、爬虫对象-豆瓣读书TOP250二、python爬虫代码讲解三、讲解视频四、完整源码一、爬虫对象-豆瓣读书TOP250今天我们分享一期python爬虫案例讲解。爬取对象是,豆瓣读书TOP250排行榜数据:https://book.douban.com/top250​开发好python爬虫代码后,爬取成功后的csv数据,如下:​......