用python爬取豆瓣前一百电影

目录
  • 实现代码:
  • 代码分析:
  • 运行结果:
  • 总结

网站爬取的流程图:

实现项目我们需要运用以下几个知识点

一、获取网页
1.找网页规律;
2.使用 for 循环语句获得网站前4页的网页链接;
3.使用 Network 选项卡查找Headers信息;
4.使用 requests.get() 函数带着 Headers 请求网页。

二、解析网页
1.使用 BeautifulSoup 解析网页;
2.使用 BeautifulSoup 对象调用 find_all() 方法定位包含单部电影全部信息的标签;
3.使用 Tag.text 提取序号、电影名、评分、推荐语;
4.使用 Tag['属性名'] 提取电影详情链接。

三、存储数据
1.使用 with open() as … 创建要写入内容的 csv 文件;
2.使用 csv.DictWriter() 将文件对象转换为 DictWriter 对象;
3.参数 fieldnames 用来设置 csv 文件的表头;
4.使用 writeheader() 写入表头;
5.使用 writerows() 将内容写入 csv 文件。

实现代码:

import csvimport requestsfrom bs4 import BeautifulSoup# 设置列表,用以存储每部电影的信息data_list = []# 设置请求头headers = {    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36'}# 使用 for 循环遍历取值范围为 0~3 的数据for page_number in range(4):    # 设置要请求的网页链接    url = 'https://movie.douban.com/top250?start={}&filter='.format(page_number * 25)    # 请求网页    movies_list_res = requests.get(url, headers=headers)    # 解析请求到的网页内容    bs = BeautifulSoup(movies_list_res.text, 'html.parser')    # 搜索网页中所有包含单部电影全部信息的 Tag    movies_list = bs.find_all('div', class_='item')    # 使用 for 循环遍历搜索结果    for movie in movies_list:        # 提取电影的序号        movie_num = movie.find('em').text        # 提取电影名        movie_name = movie.find('span').text        # 提取电影的评分        movie_score = movie.find("span",class_='rating_num').text        # 提取电影的推荐语        movie_instruction = movie.find("span",class_='inq').text        # 提取电影的链接        movie_link = movie.find('a')['href']        # 将信息添加到字典中        movie_dict = {            '序号': movie_num,            '电影名': movie_name,            '评分': movie_score,            '推荐语': movie_instruction,            '链接': movie_link        }        # 打印电影的信息        print(movie_dict)        # 存储每部电影的信息        data_list.append(movie_dict)# 新建 csv 文件,用以存储电影信息with open('movies.csv', 'w', encoding='utf-8-sig') as f:    # 将文件对象转换成 DictWriter 对象    f_csv = csv.DictWriter(f, fieldnames=['序号', '电影名', '评分', '推荐语', '链接'])    # 写入表头与数据    f_csv.writeheader()    f_csv.writerows(data_list)

代码分析:

(1)通过观察网站一页的电影数,可以发现一页只有 25 部电影的信息。

也就是说我们需要爬取网站前4页(100 = 25*4)的电影信息。

这里我们使用了遍历,爬取前四页的数据。

(2)通过快捷键打开网页的开发者工具(Windows 用户可以在浏览器页面下按 Ctrl + Shift + I 键或者直接F12唤出浏览器开发者工具,Mac 用户的快捷键为 command + option + I)。

接着使用开发者工具中的指针工具,大致查看一下前两部电影中,需爬取的信息所在位置,观察一下其中是否有什么规律。

可以发现第一部电影里序号、电影名、评分、推荐语以及详情链接在class属性值为"item"的标签里。

(3)豆瓣电影 Top250 的 Robots 协议

并没有看到Disallow: /Top250,这说明可以对这个网页进行爬取。

(4)在互联网世界中,网络请求会将浏览器信息储存在请求头(Request Header)当中。

只要我们将浏览器信息复制下来,在爬虫程序只要在发起请求时,设置好与请求头对应的参数,即可成功伪装成浏览器。

(5)代码思路

1)熟练地使用开发者工具的指针工具,可以很方便地帮助我们定位数据。

2)用指针工具定位到各个数据所在位置后,查看它们的规律。

3)想要提取的标签如果具有属性,可以使用 Tag.find(HTML元素名, HTML属性名='')来提取;没有属性的话,可以在这个标签附近找到一个有属性的标签,然后再进行 find() 提取。

通过上述步骤将信息爬取下来后,就走到我们爬虫的最后一步——存储数据。

(6)存储数据

1)调用 csv 模块中类 DictWriter 的语法为:csv.DictWriter(f, fieldnames)。语法中的参数 f 是 open() 函数打开的文件对象;参数 fieldnames 用来设置文件的表头;

2)执行csv.DictWriter(f, fieldnames)后会得到一个 DictWriter 对象;

3)得到的 DictWriter 对象可以调用 writeheader() 方法,将 fieldnames 写入 csv 的第一行;

4)最后,调用 writerows() 方法将多个字典写进 csv 文件中。

运行结果:

生成的CSV文件:

总结

到此这篇关于用python爬取豆瓣前一百电影的文章就介绍到这了,更多相关python爬取豆瓣电影内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python利用Scrapy框架爬取豆瓣电影示例

    本文实例讲述了Python利用Scrapy框架爬取豆瓣电影.分享给大家供大家参考,具体如下: 1.概念 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中. 通过Python包管理工具可以很便捷地对scrapy进行安装,如果在安装中报错提示缺少依赖的包,那就通过pip安装所缺的包 pip install scrapy scrapy的组成结构如下图所示 引擎Scrapy Engine,用于中转调度其他部分的信号和数据

  • Python爬虫实现的根据分类爬取豆瓣电影信息功能示例

    本文实例讲述了Python爬虫实现的根据分类爬取豆瓣电影信息功能.分享给大家供大家参考,具体如下: 代码的入口: if __name__ == '__main__': main() #! /usr/bin/python3 # -*- coding:utf-8 -*- # author:Sirius.Zhao import json from urllib.parse import quote from urllib.request import urlopen from urllib.reque

  • Python爬虫获取豆瓣电影并写入excel

    豆瓣电影排行榜前250 分为10页,第一页的url为https://movie.douban.com/top250,但实际上应该是https://movie.douban.com/top250?start=0 后面的参数0表示从第几个开始,如0表示从第一(肖申克的救赎)到第二十五(触不可及),https://movie.douban.com/top250?start=25表示从第二十六(蝙蝠侠:黑暗骑士)到第五十名(死亡诗社).等等, 所以可以用一个步长为25的range的for循环参数 复制代

  • Python实现的爬取豆瓣电影信息功能案例

    本文实例讲述了Python实现的爬取豆瓣电影信息功能.分享给大家供大家参考,具体如下: 本案例的任务为,爬取豆瓣电影top250的电影信息(包括序号.电影名称.导演和主演.评分以及经典台词),并将信息作为字典形式保存进txt文件.这里只用到requests库,没有用到beautifulsoup库 step1:首先获取每一页的源代码,用requests.get函数获取,为了防止请求错误,使用try...except.. def getpage(url): try: res=requests.get

  • python爬取豆瓣电影TOP250数据

    在执行程序前,先在MySQL中创建一个数据库"pachong". import pymysql import requests import re #获取资源并下载 def resp(listURL): #连接数据库 conn = pymysql.connect( host = '127.0.0.1', port = 3306, user = 'root', password = '******', #数据库密码请根据自身实际密码输入 database = 'pachong', cha

  • Python使用mongodb保存爬取豆瓣电影的数据过程解析

    创建爬虫项目douban scrapy startproject douban 设置items.py文件,存储要保存的数据类型和字段名称 # -*- coding: utf-8 -*- import scrapy class DoubanItem(scrapy.Item): title = scrapy.Field() # 内容 content = scrapy.Field() # 评分 rating_num = scrapy.Field() # 简介 quote = scrapy.Field(

  • Python爬虫——爬取豆瓣电影Top250代码实例

    利用python爬取豆瓣电影Top250的相关信息,包括电影详情链接,图片链接,影片中文名,影片外国名,评分,评价数,概况,导演,主演,年份,地区,类别这12项内容,然后将爬取的信息写入Excel表中.基本上爬取结果还是挺好的.具体代码如下: #!/usr/bin/python #-*- coding: utf-8 -*- import sys reload(sys) sys.setdefaultencoding('utf8') from bs4 import BeautifulSoup imp

  • 用python爬取豆瓣前一百电影

    目录 实现代码: 代码分析: 运行结果: 总结 网站爬取的流程图: 实现项目我们需要运用以下几个知识点 一.获取网页1.找网页规律:2.使用 for 循环语句获得网站前4页的网页链接:3.使用 Network 选项卡查找Headers信息:4.使用 requests.get() 函数带着 Headers 请求网页. 二.解析网页1.使用 BeautifulSoup 解析网页:2.使用 BeautifulSoup 对象调用 find_all() 方法定位包含单部电影全部信息的标签:3.使用 Tag

  • python爬取豆瓣电影排行榜(requests)的示例代码

    '''   爬取豆瓣电影排行榜   设计思路:        1.先获取电影类型的名字以及特有的编号        2.将编号向ajax发送get请求获取想要的数据        3.将数据存放进excel表格中 ''' 环境部署: 软件安装: Python 3.7.6 官网地址:https://www.python.org/ 安装地址:https://www.python.org/ftp/python/3.7.6/python-3.7.6-amd64.exe PyCharm 2020.2.2

  • python 爬取豆瓣电影短评并利用wordcloud生成词云图

    目录 前言 第一步.准备数据 第二步.编写爬虫代码 第三步.生成词云图 前言 最近学到数据可视化到了词云图,正好学到爬虫,各种爬网站[实验名称] 爬取豆瓣电影<千与千寻>的评论并生成词云 利用爬虫获得电影评论的文本数据 处理文本数据生成词云图 第一步.准备数据 需要登录豆瓣网站才能够获得短评文本数据movie.douban.com/subject/129… 首先获取cookies,使用爬虫强大的firefox浏览器 将cookies数据复制到cookies.txt文件当中备用, 第二步.编写爬

  • Python爬取豆瓣视频信息代码实例

    这篇文章主要介绍了Python爬取豆瓣视频信息代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 这里是爬取豆瓣视频信息,用pyquery库(jquery的python库). 一:代码 from urllib.request import quotefrom pyquery import PyQuery as pqimport requestsimport pandas as pddef get_text_page (movie_name)

  • python 爬取豆瓣网页的示例

    python作为一种已经广泛传播且相对易学的解释型语言,现如今在各方面都有着广泛的应用.而爬虫则是其最为我们耳熟能详的应用,今天笔者就着重针对这一方面进行介绍. python 语法简要介绍 python 的基础语法大体与c语言相差不大,由于省去了c语言中的指针等较复杂的结构,所以python更被戏称为最适合初学者的语言.而在基础语法之外,python由其庞大的第三方库组成,而其中包含多种模块,而通过模块中包含的各种函数与方法能够帮助我们实现各种各样的功能. 而在python爬虫中,我们需要用到的

  • python爬取豆瓣评论制作词云代码

    目录 一.爬取豆瓣热评 二.制作词云 总结 一.爬取豆瓣热评 该程序进行爬取豆瓣热评,将爬取的评论(json文件)保存到与该python文件同一级目录下注意需要下载这几个库:requests.lxml.json.time import requests from lxml import etree import json import time class Spider(object): def __init__(self): #seif.ure='https://movie.douban.co

  • 详解Python爬取并下载《电影天堂》3千多部电影

    不知不觉,玩爬虫玩了一个多月了. 我愈发觉得,爬虫其实并不是什么特别高深的技术,它的价值不在于你使用了什么特别牛的框架,用了多么了不起的技术,它不需要.它只是以一种自动化搜集数据的小工具,能够获取到想要的数据,就是它最大的价值. 我的爬虫课老师也常跟我们强调,学习爬虫最重要的,不是学习里面的技术,因为前端技术在不断的发展,爬虫的技术便会随着改变.学习爬虫最重要的是,学习它的原理,万变不离其宗. 爬虫说白了是为了解决需要,方便生活的.如果能够在日常生活中,想到并应用爬虫去解决实际的问题,那么爬虫的

  • Python爬取爱奇艺电影信息代码实例

    这篇文章主要介绍了Python爬取爱奇艺电影信息代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一,使用库 1.requests 2.re 3.json 二,抓取html文件 def get_page(url): response = requests.get(url) if response.status_code == 200: return response.text return None 三,解析html文件 我们需要的电影信

  • 用Python爬取2022春节档电影信息

    目录 前提条件 相关介绍 实验环境 具体步骤 目标网站 分析网站 代码实现 输出结果 总结 前提条件 熟悉HTML基础语句 熟悉Xpath基础语句 相关介绍 Python是一种跨平台的计算机程序设计语言.是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言.最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越多被用于独立的.大型项目的开发.Requests是一个很实用的Python HTTP客户端库.Pandas是一个Python软件包,提供快速,灵活和

随机推荐