【python】使用代理IP爬取猫眼电影专业评分数据
前言
我们为什么需要使用IP代理服务?
在编写爬虫程序的过程中,IP封锁无疑是一个常见且棘手的问题。尽管网络上存在大量的免费IP代理网站,但其质量往往参差不齐,令人堪忧。许多代理IP的延迟过高,严重影响了爬虫的工作效率;更糟糕的是,其中不乏大量已经失效的代理IP,使用这些IP不仅无法绕过封锁,反而可能使爬虫陷入更深的困境。
本篇文章中介绍一下如何使用Python的Requests库和BeautifulSoup库来抓取猫眼电影网站上的专业评分数据。
正文
1、导包
import requests
from bs4 import BeautifulSoup
import pandas as pd
import matplotlib.pyplot as plt
Requests库是一个简单易用的HTTP库,用于发送网络请求和获取响应数据。BeautifulSoup库则是一个用于解析HTML和XML文档的Python库,可以帮助我们从网页中提取所需的数据。
2、设置代理
设置代理和代理信息可以在这里获取:IP代理服务
# 设置代理信息
proxyHost = "www.16yun.cn"
proxyPort = "5445"
proxyUser = "your_proxy_user"
proxyPass = "your_proxy_password"# 设置代理
proxyMeta = "http://%(user)s:%(pass)s@%(host)s:%(port)s" % {"host": proxyHost,"port": proxyPort,"user": proxyUser,"pass": proxyPass,
}
proxies = {"http": proxyMeta,"https": proxyMeta,
}
3、设置请求头
请求头的获取方式可以参考这篇文章:爬虫入门学习(三)请求headers处理-CSDN博客
当然不用自己的也行哈哈
# 设置请求头,模拟浏览器访问
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
}
4、发起请求
# 发起请求,获取网页内容
url = 'https://maoyan.com/films?showType=3'
response = requests.get(url, headers=headers, proxies=proxies) # 添加proxies参数
soup = BeautifulSoup(response.text, 'html.parser')
5、解析网页内容
# 解析网页内容,提取专业评分数据
movie_names = []
professional_scores = []for movie in soup.find_all('div', attrs={'class': 'movie-item film-channel'}):movie_name = movie.find('span', attrs={'class': 'name'}).textscore = movie.find('span', attrs={'class': 'integer'}).text + movie.find('span', attrs={'class': 'fraction'}).textmovie_names.append(movie_name)professional_scores.append(score)# 将数据存储到DataFrame中
data = {'电影名称': movie_names, '专业评分': professional_scores}
df = pd.DataFrame(data)
6、数据可视化
# 数据可视化
plt.figure(figsize=(10, 6))
plt.bar(df['电影名称'], df['专业评分'], color='skyblue')
plt.title('猫眼电影专业评分排行榜')
plt.xlabel('电影名称')
plt.ylabel('专业评分')
plt.xticks(rotation=45)
plt.show()
上述代码片段展示了如何运用Python中的Requests库与BeautifulSoup库,精准地抓取猫眼电影网站上的专业评分数据。随后,通过Pandas库对数据进行整理与分析,再借助Matplotlib库进行可视化呈现。这一数据采集、处理与可视化的完整流程。
完整代码如下:
# 导入所需的库
import requests
from bs4 import BeautifulSoup
import pandas as pd
import matplotlib.pyplot as plt# 设置代理信息
proxyHost = "www.16yun.cn"
proxyPort = "5445"
proxyUser = "your_proxy_user"
proxyPass = "your_proxy_password"# 设置代理
proxyMeta = "http://%(user)s:%(pass)s@%(host)s:%(port)s" % {"host": proxyHost,"port": proxyPort,"user": proxyUser,"pass": proxyPass,
}
proxies = {"http": proxyMeta,"https": proxyMeta,
}# 设置请求头,模拟浏览器访问
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
}# 发起请求,获取网页内容
url = 'https://maoyan.com/films?showType=3'
response = requests.get(url, headers=headers, proxies=proxies) # 添加proxies参数
soup = BeautifulSoup(response.text, 'html.parser')# 解析网页内容,提取专业评分数据
movie_names = []
professional_scores = []for movie in soup.find_all('div', attrs={'class': 'movie-item film-channel'}):movie_name = movie.find('span', attrs={'class': 'name'}).textscore = movie.find('span', attrs={'class': 'integer'}).text + movie.find('span', attrs={'class': 'fraction'}).textmovie_names.append(movie_name)professional_scores.append(score)# 将数据存储到DataFrame中
data = {'电影名称': movie_names, '专业评分': professional_scores}
df = pd.DataFrame(data)# 数据可视化
plt.figure(figsize=(10, 6))
plt.bar(df['电影名称'], df['专业评分'], color='skyblue')
plt.title('猫眼电影专业评分排行榜')
plt.xlabel('电影名称')
plt.ylabel('专业评分')
plt.xticks(rotation=45)
plt.show()
当然,如果你自己要使用的话得用自己专属的IP代理信息,而且具体情况得具体分析。如果你买了代理IP的话,不会的直接问客服,直接给你服务的服服帖帖的😎。
小结
本文详细阐述了如何利用Python爬虫技术从猫眼电影网站获取专业评分数据的过程,并通过代码实例展示了从设置代理、发起请求、解析网页内容到数据提取与可视化的完整流程。
首先,文章介绍了必要的库导入,包括requests用于发起网络请求,BeautifulSoup用于解析HTML页面,pandas用于数据处理,以及matplotlib用于数据可视化。接着,通过设置代理和请求头,模拟了浏览器访问,成功绕过了可能存在的反爬虫机制,获取了目标网页的内容。
在解析网页内容方面,文章通过BeautifulSoup的find_all方法定位到包含电影信息的div元素,并提取了电影名称和专业评分数据。这些数据被存储在一个列表中,为后续的数据处理和分析提供了基础。
为了更直观地展示数据,文章还利用pandas库将提取的数据转换成了DataFrame格式,并使用matplotlib库绘制了专业评分排行榜的条形图。这不仅有助于读者更好地理解数据分布情况,还能为后续的深入分析提供直观的参考。
相关文章:
【python】使用代理IP爬取猫眼电影专业评分数据
前言 我们为什么需要使用IP代理服务? 在编写爬虫程序的过程中,IP封锁无疑是一个常见且棘手的问题。尽管网络上存在大量的免费IP代理网站,但其质量往往参差不齐,令人堪忧。许多代理IP的延迟过高,严重影响了爬虫的工作…...
C/C++中枚举(enum)和结构体(struct)的异同
一、枚举 enum 1.普通枚举,枚举在C中使用比C使用简单 C语言: enum Color {red,green,blue }; enum Color c red;C语言 enum Color {red,green,blue }; Color c red;C认为这种枚举方式会污染名字,即:枚举使用的名字,在同一个作…...

【数据可视化】使用Python + Gephi,构建中医方剂关系网络图!
代码和示例数据下载 前言 在这篇文章中,我们将会可视化 《七版方剂学》 的药材的关系,我们将使用Python制作节点和边的数据,然后在Gephi中绘制出方剂的网络图。 Gephi是一个专门用于构建网络图的工具,只要你能提供节点和边的数…...

部署prometheus+Grafana可视化仪表盘监控服务
一、部署prometheus及监控仪表盘 简介 Prometheus是开源监控报警系统和时序列数据库(TSDB)。 Prometheus的基本原理是通过HTTP协议周期性抓取被监控组件的状态,任意组件只要提供对应的HTTP接口就可以接入监控,输出被监控组件信息的HTTP接口被叫做expo…...
python中的类与对象
前言 在Python中,类是一种用于创建新类型对象的结构,它允许我们将数据和功能(属性和方法)封装到一个单独的逻辑单元中。类可以被看作是创建对象(实例)的蓝图或模板。类(Class)和对象…...

sentry-cli - error: Failed to load .sentryclirc file from project path
Xcode 15.2 warning sentry-cli - error: Failed to load .sentryclirc file from project path (/Users/zhuhongwei/Desktop/pandabill/.sentryclirc)推荐一下刚上线的 App 熊猫小账本,里面有用到这篇博客讲的内容 熊猫小账本 一个简洁的记账 App,用于…...

回归预测 | Matlab实现SO-BP蛇算法优化BP神经网络多变量回归预测
回归预测 | Matlab实现SO-BP蛇算法优化BP神经网络多变量回归预测 目录 回归预测 | Matlab实现SO-BP蛇算法优化BP神经网络多变量回归预测预测效果基本描述程序设计参考资料 预测效果 基本描述 1.Matlab实现SO-BP蛇算法优化BP神经网络多变量回归预测(完整源码和数据) …...
如何添加 Android Native 系统服务
如何添加 Android Native 系统服务 工作学习过程中,我们可能需要去阅读不同类型的 Native 系统服务,也有可能会自己去完成一个 Native 系统服务。无论哪种情况都需要我们了解基本的 Native 如何去添加。就像我们写 Android App 得先了解一下四大组件才行…...
【力扣】189.轮转数组
题目描述 给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 示例 1: 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步: [7,1,2,3,4,5,6] 向右轮转 2 步: [6,7,1,2,3,4,5] 向右轮转 3 步: [5,6…...

C语言字符函数和字符串函数详解
Hello, 大家好,我是一代,今天给大家带来有关字符函数和字符串函数的有关知识 所属专栏:C语言 创作不易,望得到各位佬们的互三呦 一.字符函数 在C语言中有一些函数是专门为字符设计的,这些函数的使用都需要包含一个头文…...

【CKA模拟题】查询消耗CPU最多的Pod
题干 For this question, please set this context (In exam, diff cluster name) 对于此问题,请设置此上下文(在考试中,diff 集群名称) kubectl config use-context kubernetes-adminkubernetesFind the pod that consumes the …...

网络简略总结
目录 一、三次握手 四次挥手 1、三次握手:为了建立长链接进行交互即建立一个会话,使用http/https协议 2、四次挥手是一个断开连接释放服务器资源的过程 3、如果已经建立了连接,但是客户端突然出现故障了怎么办? 4、谁可以中断连接?客户端还是服务端还是都可以? 5、…...
如何处理错误情况
处理错误情况是确保自动窗帘系统稳定运行的重要一环。在编写代码时,你需要考虑可能发生的各种错误情况,并编写相应的错误处理代码。下面是一些处理错误情况的常见方法: (1)错误检测: 首先,你需要能够检测到错误的发生。…...
【Greenhills】MULTI IDE-GHS最新版本Compiler 23.5.4的兼容性问题
【更多软件使用问题请点击亿道电子官方网站查询】 1、 文档目标 关于GHS推出的最新编译器版本 Compiler 2023.5.4在GHS以前版本的MULTI IDE上面能否使用的问题 2、 问题场景 针对于,客户使用MULTI IDE 8.1.4以前的IDE版本,想要搭载使用最新版本的编译器…...

用连续自然数之和来表达整数 - 华为OD统一考试(C卷)
OD统一考试(C卷) 分值: 100分 题解: Java / Python / C++ 题目描述 一个整数可以由连续的自然数之和来表示。给定一个整数,计算该整数有几种连续自然数之和的表达式,且打印出每种表达式。 输入描述 一个目标整数T (1 <=T<= 1000) 输出描述 该整数的所有表达式…...

SQLiteC/C++接口详细介绍之sqlite3类(十二)
返回目录:SQLite—免费开源数据库系列文章目录 上一篇:SQLiteC/C接口详细介绍之sqlite3类(十一) 下一篇:SQLiteC/C接口详细介绍之sqlite3类(十三) 37.sqlite3_load_extension 用于在SQLit…...

linux系统--------------mysql数据库管理
目录 一、SQL语句 1.1SQL语言分类 1.2查看数据库信息 1.3登录到你想登录的库 1.4查看数据库中的表信息 1.5显示数据表的结构(字段) 1.5.1数据表的结构 1.5.2常用的数据类型: 二、关系型数据库的四种语言 2.1DDL:数据定义语言&am…...

网络——入门基础
目录 协议 网络协议 OSI七层模型 网络传输基本流程 网络传输流程图 局域网通信 数据包的封装和解包 广域网通信 网络地址管理 IP地址 MAC地址 协议 关于什么是局域网,什么是广域网,我这里就不过多赘述了,我们直接来谈一下什么…...

二、yocto 集成ros2(基于raspberrypi 4B)
yocto 集成ros2 yocto 集成ros21. 下载ros layer2. 编译集成ros3. 功能验证 yocto 集成ros2 本篇文章为基于raspberrypi 4B单板的yocto实战系列的第二篇文章。 一、yocto 编译raspberrypi 4B并启动 本节我们将ros2机器人操作系统移植到我们的yocto系统里面。 1. 下载ros laye…...

html--bug
文章目录 html html <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>老师</title><style>body {background-color: #008000;margin: 0px;cursor: none;overflow: hidden;}</style></head><bod…...

idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...
树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频
使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

React第五十七节 Router中RouterProvider使用详解及注意事项
前言 在 React Router v6.4 中,RouterProvider 是一个核心组件,用于提供基于数据路由(data routers)的新型路由方案。 它替代了传统的 <BrowserRouter>,支持更强大的数据加载和操作功能(如 loader 和…...
逻辑回归:给不确定性划界的分类大师
想象你是一名医生。面对患者的检查报告(肿瘤大小、血液指标),你需要做出一个**决定性判断**:恶性还是良性?这种“非黑即白”的抉择,正是**逻辑回归(Logistic Regression)** 的战场&a…...

ETLCloud可能遇到的问题有哪些?常见坑位解析
数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

分布式增量爬虫实现方案
之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面,避免重复抓取,以节省资源和时间。 在分布式环境下,增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路:将增量判…...

Springboot社区养老保险系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,社区养老保险系统小程序被用户普遍使用,为方…...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...
上位机开发过程中的设计模式体会(1):工厂方法模式、单例模式和生成器模式
简介 在我的 QT/C 开发工作中,合理运用设计模式极大地提高了代码的可维护性和可扩展性。本文将分享我在实际项目中应用的三种创造型模式:工厂方法模式、单例模式和生成器模式。 1. 工厂模式 (Factory Pattern) 应用场景 在我的 QT 项目中曾经有一个需…...