海岛漁翁 发表于 2023-6-29 20:36:21

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

目录

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

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

前几天,我分享了一个python爬虫案例,爬取豆瓣读书TOP250数据:【python爬虫案例】用python爬豆瓣读书TOP250排行榜!
今天,我再分享一期,python爬取豆瓣电影TOP250数据!
爬虫大体流程和豆瓣读书TOP250类似,细节之处见逻辑。
首先,打开豆瓣电影TOP250的页面:https://movie.douban.com/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').text.replace('\n', '')# 电影名称
        movie_name.append(name)
        url = movie.select('.hd a')['href']# 电影链接
        movie_url.append(url)
        star = movie.select('.rating_num').text# 电影评分
        movie_star.append(star)
        star_people = movie.select('.star span').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').split('/').strip()
        year1 = movie_infos.split('\n').split('/').strip()
        year2 = movie_infos.split('\n').split('/').strip()
        year = year0 + '/' + year1 + '/' + year2
        movie_year.append(year)
        country = movie_infos.split('\n').split('/').strip()
        movie_country.append(country)
        type = movie_infos.split('\n').split('/').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源码干货中!

来源:https://www.cnblogs.com/mashukui/p/17514643.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: 【python爬虫案例】用python爬豆瓣电影TOP250排行榜!