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

文章目录

  • 一、爬虫对象-豆瓣电影TOP250
  • 二、python爬虫代码讲解
  • 三、同步视频
  • 四、获取完整源码

一、爬虫对象-豆瓣电影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 + '/' + year2movie_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_namedf['电影链接'] = movie_urldf['电影评分'] = movie_stardf['评分人数'] = movie_star_peopledf['导演'] = movie_directordf['主演'] = movie_actordf['上映年份'] = movie_yeardf['国家'] = movie_countrydf['类型'] = movie_typedf.to_csv(csv_name, encoding='utf_8_sig')  # 将数据保存到csv文件

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

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

三、同步视频

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

四、获取完整源码

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


我是 @马哥python说 ,一名10年程序猿,持续分享python源码干货中!


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部