BeautifulSoup爬取豆瓣电影数据

news2024/9/21 8:01:21

BeautifulSoup爬取豆瓣TOP250

豆瓣爬取地址

https://movie.douban.com/top250?format=text

BeautifulSoup官网地址

https://www.rddoc.com/doc/BeautifulSoup/4.5.3/zh/quick-start/

安装所需函数库

pip install beautifulsoup4
pip install lxml

在这里插入图片描述

pip install requests

在这里插入图片描述

导入所需函数库

import lxml
import pandas as pd
import requests as rq
from bs4 import BeautifulSoup as bs

测试访问

在这里插入图片描述

#访问目标
url="https://movie.douban.com/top250"
#设置请求头
headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36'}
#进行访问
html=rq.get(url,headers=headers)
# 这是判断可否爬取的成功,等于200既成功
html.encoding=html.apparent_encoding
if html.status_code ==  200:
    print("成功获取源代码")
    print(html.text)
else:
    print("访问失败")

在这里插入图片描述

获取所有的电影名数据

在这里插入图片描述

#访问目标
url="https://movie.douban.com/top250"
#设置请求头
headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36'}
#进行访问
html=rq.get(url,headers=headers)
# 这是判断可否爬取的成功,等于200既成功
html.encoding=html.apparent_encoding
#网页解析
page=bs(html.text,"html.parser")
#获取所有的标签名为span,class=title的标签
titles=page.find_all("span",class_="title")
#此处避免文章过于累赘,只输出前五条
print(titles[:5])
[<span class="title">肖申克的救赎</span>, <span class="title"> / The Shawshank Redemption</span>, <span class="title">霸王别姬</span>, <span class="title">阿甘正传</span>, <span class="title"> / Forrest Gump</span>]

对于数据进行二次解析

#定义标题列表
title_list=[]
for title in titles:
    #获取电影名加入列表
    title_list.append(title.text)
#输出前五条
title_list[:5]
['肖申克的救赎',
 '\xa0/\xa0The Shawshank Redemption',
 '霸王别姬',
 '阿甘正传',
 '\xa0/\xa0Forrest Gump']

对于数据进行剔除,只保留电影名(原数据包含导演,演员)

在这里插入图片描述

#访问目标
url="https://movie.douban.com/top250"
#设置请求头
headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36'}
#进行访问
html=rq.get(url,headers=headers)
# 这是判断可否爬取的成功,等于200既成功
html.encoding=html.apparent_encoding
#网页解析
page=bs(html.text,"html.parser")
#获取所有的标签名为div,class=hd的标签
divs=page.find_all("div",class_="hd")
print(divs[:1])

[<div class="hd">
<a class="" href="https://movie.douban.com/subject/1292052/">
<span class="title">肖申克的救赎</span>
<span class="title"> / The Shawshank Redemption</span>
<span class="other"> / 月黑高飞()  /  刺激1995()</span>
</a>
<span class="playable">[可播放]</span>
</div>]
title_list=[]
for tag in divs:
    title=tag.find('span').string
    title_list.append(title)
print(title_list)
['肖申克的救赎', '霸王别姬', '阿甘正传', '泰坦尼克号', '这个杀手不太冷', '美丽人生', '千与千寻', '辛德勒的名单', '盗梦空间', '星际穿越', '忠犬八公的故事', '楚门的世界', '海上钢琴师', '三傻大闹宝莱坞', '机器人总动员', '放牛班的春天', '无间道', '疯狂动物城', '大话西游之大圣娶亲', '控方证人', '熔炉', '教父', '当幸福来敲门', '触不可及', '怦然心动']

完整代码展示(获取评分,电影名,评论)

#访问目标
url="https://movie.douban.com/top250"
#设置请求头
headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36'}
#进行访问
html=rq.get(url,headers=headers)
# 这是判断可否爬取的成功,等于200既成功
html.encoding=html.apparent_encoding
#网页解析
page=bs(html.text,"html.parser")
#获取所有的标签名为div,class=hd的标签
divs=page.find_all("div",class_="hd")
#获取原始评分数据
stars=page.find_all("span",class_="rating_num")
#获取原始电影简介数据
contens=page.find_all("span",class_="inq")
#定义电影名列表
title_list=[]
#定义评分列表
star_list=[]
#定义电影简介列表
conten_list=[]
for tag in divs:
    #获取电影名
    title=tag.find('span').string
    #存入列表
    title_list.append(title)
for star in stars:
    #将评分数据存入列表
    star_list.append(star.text)
for conten in contens:
    #将评分数据存入列表
    conten_list.append(conten.text)
#使用pandas读取数据展示
data = {'movie_name':title_list,'star':star_list,"content":conten_list}
pd_data=pd.DataFrame(data)
pd_data

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/698033.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IIS安装localhost显示下载,urlrewrite设置

1.取消ftp服务勾选 2. ping localhost ping 127.0.0.1 如果显示 &#xff1a;&#xff1a;1 则需要禁用ipv6 在注册表 找到并单击下面的注册表子项&#xff1a; HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters\ 双击“DisabledComponents”以修…

Git2023最新版下载与安装教程(Windows版)

Windows版Git下载与安装教程 1. 下载Git2. 安装Git3. 配置Git 1. 下载Git 打开Git官网下载地址&#xff1a;https://git-scm.com/downloads 点击Download for Windows 选择git版本进行下载 2. 安装Git 双击安装包 点击Next 选择Git的安装路径&#xff0c;点击Next 选择…

【Html】js+css实现平滑滚动

效果 示例 <!DOCTYPE html> <html><head><title> Document </title><style>button{bottom: 0;position: fixed;z-index: 999;left: 0;background: rgb(94, 171, 255);border: 1px red;color: white;font-size: large;font-family: ;}img{…

C++、Redis读取base64格式的图像记录

C、Redis读取base64格式的图像记录 一、案例需求 1.另一台电脑利用C#和Redis将图像数据按照base64格式&#xff0c;存储在某一个key中 2.本机需要使用C和Redis将图像数据获取到&#xff0c;并写入本地。 环境&#xff1a;Ubuntu20、Redis、QT 二、Qt中的Pro文件配置 QT中的…

深度学习记录1(线性回归的实现)

1、整体思路 根据线性回归的定义&#xff0c; &#xff0c;建立线性回归模型&#xff0c;在损失函数的计算上&#xff0c;采用L2 Loss&#xff08;均方误差&#xff09;。同时&#xff0c;对于模型的优化采用随机梯度下降。 2、详细代码分析 import random import torch from…

Day7——Web安全基础下

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 回顾前言一、owasp top 10漏洞&#xff08;了解&#xff09;&#xff08;四年一更&#xff09;1.访问控制崩溃2.敏感数据暴露3.sql注入4.不安全的设计5.安全配置不当…

【单片机】STM32单片机的各个定时器的定时中断程序,标准库

文章目录 定时器1_定时中断定时器2_定时中断定时器3_定时中断定时器4_定时中断定时器5_定时中断 高级定时器和普通定时器的区别&#xff08;https://zhuanlan.zhihu.com/p/557896041&#xff09;&#xff1a; 定时器1_定时中断 TIM1是高级定时器&#xff0c;使用的时钟总线是R…

使用Megascans,Blender和Substance 3D画家创建渔人旅馆(p2)

今天云渲染小编接着Polina Tarakanova分享的Fishermans Inn项目上篇分享&#xff0c;下篇主要是纹理和材料、组装场景、照明等方面的分享。 纹理和材料 随着酒馆的模块化建设完成&#xff0c;是时候进入贴图阶段了。我使用Substance 3D Painter进行了所有的贴图工作。在我的场…

【网站创建】网络杂谈(6)之web网站的创建

涉及知识点 如何创建web网站&#xff0c;web网站创建的步骤&#xff0c;手把手教你如何搭建web网站&#xff0c;web网站创建的过程&#xff0c;深入了解web网站创建。 原创于&#xff1a;CSDN博主-《拄杖盲学轻声码》&#xff0c;更多内容可去其主页关注下哈&#xff0c;不胜感…

基于Java+SpringBoot+Vue的计算机类考研交流平台设计与实现

博主介绍&#xff1a;擅长Java、微信小程序、Python、Android等&#xff0c;专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3fb; 不然下次找不到哟 Java项目精品实战案例…

React-View-UI组件库封装Loading加载中源码

目录 组件介绍Loading API能力组件源码组件测试源码组件库线上地址 组件介绍 Loading组件是日常开发用的很多的组件&#xff0c;这次封装主要包含两种状态的Loading&#xff0c;旋转、省略号&#xff0c;话不多说先看一下组件的文档页面吧&#xff1a; 正在上传…重新上传取…

掌握imgproc组件:opencv-图像变换

图像变换 1. 基于OpenCV的边缘检测1.1 边缘检测的一般步骤1.2 canny算子1.2.1 Canny边缘检测步骤&#xff1a;1.2.2 Canny边缘检测&#xff1a;Canny()函数1.2.3 Canny边缘检测案例 1.3 sobel算子1.3.1 sobel算子的计算过程1.3.2 使用Sobel算子&#xff1a;Sobel()函数1.3.3 示…

模拟高并发下RabbitMQ的削峰作用

在并发量很高的时候&#xff0c;服务端处理不过来客户端发的请求&#xff0c;这个时候可以使用消息队列&#xff0c;实现削峰。原理就是请求先打到队列上&#xff0c;服务端从队列里取出消息进行处理&#xff0c;处理不过来的消息就堆积在消息队列里等待。 可以模拟一下这个过…

生态+公链:中创面向未来的区块链建设!

未来的区块链市场&#xff0c;一定属于能够将区块链技术与应用完美结合在一起的产品。从互联网的发展历程来看&#xff0c;最后的竞争往往会集中到生态与兼容性。 如何将区块链的落地和应用更加有机地结合在一起&#xff0c;从而让区块链的功能和作用得到最大程度的发挥&#…

机器学习8:特征组合-Feature Crosses

特征组合也称特征交叉&#xff08;Feature Crosses&#xff09;&#xff0c;即不同类型或者不同维度特征之间的交叉组合&#xff0c;其主要目的是提高对复杂关系的拟合能力。在特征工程中&#xff0c;通常会把一阶离散特征两两组合&#xff0c;构成高阶组合特征。可以进行组合的…

css:去除input和textarea默认边框样式并美化

input input默认样式和focus样式 参考element-ui的css&#xff0c;可以实现如下效果 实现代码 <style>/* 去除默认样式 */input {border: none;outline: none;padding: 0;margin: 0;-webkit-appearance: none;-moz-appearance: none;appearance: none;background-im…

ElasticSearch 8.0+ 版本Windows系统启动

下载地址&#xff1a;https://www.elastic.co/cn/downloads/past-releases/winlogbeat-8-8-1 解压\elasticsearch\elasticsearch-8.5.1 进入bin目录&#xff0c;启动elasticsearch.bat 问题1&#xff1a; warning: ignoring JAVA_HOMED:\jdk1.8.0_271; using bundled JDK J…

使用凌鲨连接SSH服务器

SSH&#xff08;Secure Shell&#xff09;是一种加密的网络协议&#xff0c;用于安全地连接远程服务器。它提供了一种安全的通信方式&#xff0c;使得用户可以在不受干扰的情况下远程访问服务器。SSH协议的加密技术可以保护用户的登录信息和数据传输过程中的安全性。 SSH对于服…

伦敦银同业拆借利率查询

伦敦银同业拆借利率&#xff08;London InterBank Offered rate&#xff09;简称Libor&#xff0c;它是伦敦银业之间在货币市场的无担保借贷利率&#xff0c;主要报价有五种币别&#xff1a;美元、欧元、英镑、日圆、瑞士法郎&#xff0c;分别有隔夜、一周、一个月、两个月、三…

密码学—Vigenere破解Python程序

文章目录 概要预备知识点学习整体流程技术名词解释技术细节小结代码 概要 破解Vigenere需要Kasiski测试法与重合指数法的理论基础 具体知识点细节看下面这两篇文章 预备知识点学习 下面两个是结合起来使用猜测密钥长度的&#xff0c;只有确认了密钥长度之后才可以进行破解。 …