我的编程空间,编程开发者的网络收藏夹
学习永远不晚

(转)Python3爬取豆瓣电影保存到

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

(转)Python3爬取豆瓣电影保存到

48行代码实现Python3爬取豆瓣电影排行榜
代码基于python3,用到的类库有:

标题文字

requests:通过伪造请求头或设置代理等方式获取页面内容,参考文档
BeautifulSoup:对页面进行解析,提取数据,参考文档
PyMySQL:python3版本中用于操作MySQL数据库,python2中则使用mysqldb,Github

pip安装用到的几个类库:

pip install requests
pip install bs4
pip install pymysql
分析豆瓣电影页面
页面分析:
爬取数据之前,我们都需要对页面进行分析,看我们可以从中提取到哪些数据,从下图我们看到豆瓣电影top250的页面结构,我们可以从中提取出排行榜(rank)、电影名字(name)、电影详情页链接(link)、电影海报(poster)、电影评分(score)、电影评论(quote)等,我在图中进行了标注

URL分析:
通过点击分页我们可以发现URL的格式为:https://movie.douban.com/top2...
其中num表示25的倍数的数字,最小是0也就是第一页,最大为225也就是最后一页,这可以作为我们爬取页面的限制条件,filter为过滤条件这里可不用管

代码
引入类库:

import pymysql
import requests
from bs4 import BeautifulSoup
定义爬取链接,%d用作数字占位:

baseUrl = "https://movie.douban.com/top250?start=%d&filter="
定义爬取数据方法:

def get_movies(start):

url = baseUrl % start   # 拼接爬取链接
lists = []              # 存储此页面的电影数据
html = requests.get(url)    # requests请求页面内容,由于豆瓣没有限制爬取,所以不用设置伪请求头
soup = BeautifulSoup(html.content, "html.parser")   # BeautifulSoup解析页面内容
items = soup.find("ol", "grid_view").find_all("li") # 获取所有的电影内容
for i in items:
    movie = {}      # 临时存取电影的数据
    movie["rank"] = i.find("em").text   # 电影排行榜
    movie["link"] = i.find("div","pic").find("a").get("href")   # 电影详情页链接
    movie["poster"] = i.find("div","pic").find("a").find('img').get("class="lazy" data-src")  # 电影海报地址
    movie["name"] = i.find("span", "title").text    # 电影名字
    movie["score"] = i.find("span", "rating_num").text  # 电影评分
    movie["quote"] = i.find("span", "inq").text if(i.find("span", "inq")) else "" # 某些电影没有点评,没有就设为空
    lists.append(movie) # 保存到返回数组中
return lists

连接数据库并创建数据表:

db = pymysql.connect(host="localhost",user="root",password="root",db="test",charset="utf8mb4")
cursor = db.cursor() # 创建一个游标对象
cursor.execute("DROP TABLE IF EXISTS movies") # 如果表存在则删除

createTab = """CREATE TABLE movies(

id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(20) NOT NULL,
rank VARCHAR(4) NOT NULL,
link VARCHAR(50) NOT NULL,
poster VARCHAR(100) NOT NULL,
score VARCHAR(4) NOT NULL,
quote VARCHAR(50)

)"""
cursor.execute(createTab) # 执行创建数据表操作
......
db.close() # 关闭数据库
将提取到的数据存储到数据表中:

lists = get_movies(start) # 获取提取到数据

for i in lists:
    # 插入数据到数据库sql语句,%s用作字符串占位
    sql = "INSERT INTO `movies`(`name`,`rank`,`link`,`poster`,`score`,`quote`) VALUES(%s,%s,%s,%s,%s,%s)"
    try:
        cursor.execute(sql, (i["name"], i["rank"], i["link"], i["poster"], i["score"], i["quote"]))
        db.commit()
        print(i[0]+" is success")
    except:
        db.rollback()
start += 25

完整代码:

import pymysql
import requests
from bs4 import BeautifulSoup
baseUrl = "https://movie.douban.com/top250?start=%d&filter="
def get_movies(start):

url = baseUrl % start
lists = []
html = requests.get(url)
soup = BeautifulSoup(html.content, "html.parser")
items = soup.find("ol", "grid_view").find_all("li")
for i in items:
    movie = {}
    movie["rank"] = i.find("em").text
    movie["link"] = i.find("div","pic").find("a").get("href")
    movie["poster"] = i.find("div","pic").find("a").find('img').get("class="lazy" data-src")
    movie["name"] = i.find("span", "title").text
    movie["score"] = i.find("span", "rating_num").text
    movie["quote"] = i.find("span", "inq").text if(i.find("span", "inq")) else ""
    lists.append(movie)
return lists

if name == "__main__":

db = pymysql.connect(host="localhost",user="root",password="root",db="test",charset="utf8mb4")

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

(转)Python3爬取豆瓣电影保存到

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

(转)Python3爬取豆瓣电影保存到

48行代码实现Python3爬取豆瓣电影排行榜代码基于python3,用到的类库有:标题文字requests:通过伪造请求头或设置代理等方式获取页面内容,参考文档BeautifulSoup:对页面进行解析,提取数据,参考文档PyMySQL:
2023-01-31

爬取豆瓣电影信息

昨天写了一个小爬虫,爬取了豆瓣上2017年中国大陆的电影信息,网址为豆瓣选影视,爬取了电影的名称、导演、编剧、主演、类型、上映时间、片长、评分和链接,并保存到MongoDB中。一开始用的本机的IP地址,没用代理IP,请求了十几个网页之后就收
2023-01-30

爬取豆瓣电影排行top250

爬取豆瓣电影排行top250功能分析:使用的库1、time2、json3、requests4、BuautifulSoup5、RequestException""" 作者:李舵 日期:2019-4-27 功能:抓取豆瓣电影t
2023-01-31

python爬取豆瓣电影TOP250数据

在执行程序前,先在MySQL中创建一个数据库"pachong"。import pymysql import requests import re#获取资源并下载 def resp(listURL):#连接数据库conn = pymysql.
2022-06-02

转载—Python抓取豆瓣电影

#!/usr/bin/python# -*-coding:utf-8-*-# Python:   2.7# Program:  爬取豆瓣电影 from bs4 import BeautifulSoupimport urllib2, json
2023-01-31

python爬取豆瓣top250的电影数

爬取网址: https://movie.douban.com/top250一:爬取思路(新手可以看一下) :      1:定义两个函数,一个get_page函数爬取数据,一个save函数保存数据,mian中向get_page函数传递url
2023-01-31

Python爬虫爬取豆瓣电影之数据提取值

工具:Python 3.6.5、PyCharm开发工具、Windows 10 操作系统、谷歌浏览器目的:爬取豆瓣电影排行榜中电影的title、链接地址、图片、评价人数、评分等网址:https://movie.douban.com/chart
2023-01-30

怎么用python爬取豆瓣前一百电影

这期内容当中小编将会给大家带来有关怎么用python爬取豆瓣前一百电影,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。python是什么意思Python是一种跨平台的、具有解释性、编译性、互动性和面向对象的
2023-06-26

使用Python怎么爬取豆瓣电影名

这期内容当中小编将会给大家带来有关使用Python怎么爬取豆瓣电影名,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Python的优点有哪些1、简单易用,与C/C++、Java、C# 等传统语言相比,Pyt
2023-06-14

Python爬取豆瓣电影方法是什么

本篇内容主要讲解“Python爬取豆瓣电影方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python爬取豆瓣电影方法是什么”吧!主要目标 环境:MAC + Python3.6 ;
2023-06-02

python如何爬取豆瓣电影TOP250数据

这篇文章将为大家详细讲解有关python如何爬取豆瓣电影TOP250数据,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在执行程序前,先在MySQL中创建一个数据库"pachong"。import pymy
2023-06-15

13行代码实现爬取豆瓣250电影榜单

原理很简单,通过发送resquest请求获取服务器的response,再使用xpath提取其中我们需要的数据,然后保存到文件中。先看看我爬取的结果:首先,需要用到的模块有两个:•requests•lxml第一步,我们先用Chrome的检查分
2023-01-30

如何使用Selenium爬取豆瓣电影前100的爱情片

小编给大家分享一下如何使用Selenium爬取豆瓣电影前100的爱情片,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!什么是SeleniumSelenium是一个用
2023-06-14

实践Python的爬虫框架Scrapy来抓取豆瓣电影TOP250

安装部署Scrapy 在安装Scrapy前首先需要确定的是已经安装好了Python(目前Scrapy支持Python2.5,Python2.6和Python2.7)。官方文档中介绍了三种方法进行安装,我采用的是使用 easy_install
2022-06-04

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录