一、爬虫对象-豆瓣电影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')[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源码干货中!

【python爬虫案例】用python爬豆瓣电影TOP250排行榜!的更多相关文章

  1. Python 爬取豆瓣电影Top250排行榜,爬虫初试

    from bs4 import BeautifulSoup import openpyxl import re import urllib.request import urllib.error # ...

  2. python爬虫1——获取网站源代码(豆瓣图书top250信息)

    # -*- coding: utf-8 -*- import requests import re import sys reload(sys) sys.setdefaultencoding('utf ...

  3. Scrapy爬豆瓣电影Top250并存入MySQL数据库

    d:进入D盘 scrapy startproject douban创建豆瓣项目 cd douban进入项目 scrapy genspider douban_spider movie.douban.co ...

  4. [151116 记录] 使用Python3.5爬取豆瓣电影Top250

    这一段时间,一直在折腾Python爬虫.已有的文件记录显示,折腾爬虫大概个把月了吧.但是断断续续,一会儿鼓捣python.一会学习sql儿.一会调试OpenCV,结果什么都没学好.前几天,终于耐下心来 ...

  5. 练习:一只豆瓣电影TOP250的爬虫

    练习:一只豆瓣电影TOP250爬虫 练习:一只豆瓣电影TOP250爬虫 ①创建project ②编辑items.py import scrapyclass DoubanmovieItem(scrapy ...

  6. Python爬虫入门:爬取豆瓣电影TOP250

    一个很简单的爬虫. 从这里学习的,解释的挺好的:https://xlzd.me/2015/12/16/python-crawler-03 分享写这个代码用到了的学习的链接: BeautifulSoup ...

  7. python 爬虫&爬取豆瓣电影top250

    爬取豆瓣电影top250from urllib.request import * #导入所有的request,urllib相当于一个文件夹,用到它里面的方法requestfrom lxml impor ...

  8. python爬虫 Scrapy2-- 爬取豆瓣电影TOP250

    sklearn实战-乳腺癌细胞数据挖掘(博主亲自录制视频) https://study.163.com/course/introduction.htm?courseId=1005269003& ...

  9. Python爬虫----抓取豆瓣电影Top250

    有了上次利用python爬虫抓取糗事百科的经验,这次自己动手写了个爬虫抓取豆瓣电影Top250的简要信息. 1.观察url 首先观察一下网址的结构 http://movie.douban.com/to ...

  10. 【Python爬虫】:使用高性能异步多进程爬虫获取豆瓣电影Top250

    在本篇博文当中,将会教会大家如何使用高性能爬虫,快速爬取并解析页面当中的信息.一般情况下,如果我们请求网页的次数太多,每次都要发出一次请求,进行串行执行的话,那么请求将会占用我们大量的时间,这样得不偿 ...

随机推荐

  1. KingbaseES 的oracle兼容性参数

    KingbaseES用户可通过设置相关的数据库兼容参数,部分或全部启用Oracle兼容特性. 常用的兼容性参数有以下这些: 参数名称 参数说明 ora_forbid_func_polymorphism ...

  2. Android相对布局(来自菜鸟教程)

  3. #二叉堆#JZOJ 4320 旅行

    分析 有一个很重要的性质就是如果经过道路数为奇数,把两个点到根节点的路径长加起来就是两个点间的路径长(正负消掉了) 而且众所周知的是奇数+偶数=奇数 可以预处理每个点到根节点的路径长度(按照题目要求) ...

  4. 全平台GPU通用AI视频补帧超分教程

    全平台GPU通用AI视频补帧超分教程 本教程只发布于https://www.cnblogs.com/Icys 注意:本教程需要一定的命令行和视频编码知识,请谨慎食用. 软件准备 realcugan-n ...

  5. 自动编号工具类:NumAutoUtils详解

    在软件开发中,经常需要生成唯一的编号,例如订单号.发票号.实验编号等.为了简化这一过程,本文将介绍一个Java工具类NumAutoUtils,它可以帮助我们生成带有前缀和日期的自动编号. 概述 Num ...

  6. 千字干货分享:一文教你ABI增强分析,BI的未来就在这里!

    自2017年以来,智能概念开始出现,各类商业智能BI应用的使用门槛逐渐降低,商业智能BI制造商主要竞争增强分析的能力.<2020年Gartner分析与BI平台魔法象限报告>指出,2020年 ...

  7. std::string 拼接字符串

    #include <iostream> #include <string> #include <sstream> int main() { // 方法一:12345 ...

  8. configparser封装后报错:configparser.NoSectionError: No section: 'LoginElement'

    前言 这是目录结构 先贴一下源代码 # read_ini.pyimport configparser class ReadIni(): """读取 ini.ini 配置文 ...

  9. echarts X轴类目名太长时隐藏,hover时显示全部

    echarts图表X轴 在柱状图中,X轴类目名如果数据太长: echarts会默认进行隐藏部分字段: 如果我们想让每一个类目名都显示出来,需要进行额外的处理 X轴类目名太长时,默认只显示一部分类目名 ...

  10. Java实现打包压缩文件或文件夹生成zip以实现多文件批量下载

    有时候在系统中需要一次性下载多个文件,但逐个下载文件比较麻烦.这时候,最好的解决办法是将所有文件打包成一个压缩文件,然后下载这个压缩文件,这样就可以一次性获取所有所需的文件了. 下面是一个名为Comp ...