【python】使用代理IP爬取猫眼电影专业评分数据

2024-03-14 13:20

本文主要是介绍【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爬取猫眼电影专业评分数据的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/808556

相关文章

如何使用celery进行异步处理和定时任务(django)

《如何使用celery进行异步处理和定时任务(django)》文章介绍了Celery的基本概念、安装方法、如何使用Celery进行异步任务处理以及如何设置定时任务,通过Celery,可以在Web应用中... 目录一、celery的作用二、安装celery三、使用celery 异步执行任务四、使用celery

使用Python绘制蛇年春节祝福艺术图

《使用Python绘制蛇年春节祝福艺术图》:本文主要介绍如何使用Python的Matplotlib库绘制一幅富有创意的“蛇年有福”艺术图,这幅图结合了数字,蛇形,花朵等装饰,需要的可以参考下... 目录1. 绘图的基本概念2. 准备工作3. 实现代码解析3.1 设置绘图画布3.2 绘制数字“2025”3.3

详谈redis跟数据库的数据同步问题

《详谈redis跟数据库的数据同步问题》文章讨论了在Redis和数据库数据一致性问题上的解决方案,主要比较了先更新Redis缓存再更新数据库和先更新数据库再更新Redis缓存两种方案,文章指出,删除R... 目录一、Redis 数据库数据一致性的解决方案1.1、更新Redis缓存、删除Redis缓存的区别二

Jsoncpp的安装与使用方式

《Jsoncpp的安装与使用方式》JsonCpp是一个用于解析和生成JSON数据的C++库,它支持解析JSON文件或字符串到C++对象,以及将C++对象序列化回JSON格式,安装JsonCpp可以通过... 目录安装jsoncppJsoncpp的使用Value类构造函数检测保存的数据类型提取数据对json数

Redis事务与数据持久化方式

《Redis事务与数据持久化方式》该文档主要介绍了Redis事务和持久化机制,事务通过将多个命令打包执行,而持久化则通过快照(RDB)和追加式文件(AOF)两种方式将内存数据保存到磁盘,以防止数据丢失... 目录一、Redis 事务1.1 事务本质1.2 数据库事务与redis事务1.2.1 数据库事务1.

python使用watchdog实现文件资源监控

《python使用watchdog实现文件资源监控》watchdog支持跨平台文件资源监控,可以检测指定文件夹下文件及文件夹变动,下面我们来看看Python如何使用watchdog实现文件资源监控吧... python文件监控库watchdogs简介随着Python在各种应用领域中的广泛使用,其生态环境也

Python中构建终端应用界面利器Blessed模块的使用

《Python中构建终端应用界面利器Blessed模块的使用》Blessed库作为一个轻量级且功能强大的解决方案,开始在开发者中赢得口碑,今天,我们就一起来探索一下它是如何让终端UI开发变得轻松而高... 目录一、安装与配置:简单、快速、无障碍二、基本功能:从彩色文本到动态交互1. 显示基本内容2. 创建链

Java调用Python代码的几种方法小结

《Java调用Python代码的几种方法小结》Python语言有丰富的系统管理、数据处理、统计类软件包,因此从java应用中调用Python代码的需求很常见、实用,本文介绍几种方法从java调用Pyt... 目录引言Java core使用ProcessBuilder使用Java脚本引擎总结引言python

springboot整合 xxl-job及使用步骤

《springboot整合xxl-job及使用步骤》XXL-JOB是一个分布式任务调度平台,用于解决分布式系统中的任务调度和管理问题,文章详细介绍了XXL-JOB的架构,包括调度中心、执行器和Web... 目录一、xxl-job是什么二、使用步骤1. 下载并运行管理端代码2. 访问管理页面,确认是否启动成功

python 字典d[k]中key不存在的解决方案

《python字典d[k]中key不存在的解决方案》本文主要介绍了在Python中处理字典键不存在时获取默认值的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录defaultdict:处理找不到的键的一个选择特殊方法__missing__有时候为了方便起见,