Python爬取猫眼电影数据并对其进行数据可视化

前言

如果大家经常阅读Python爬虫相关的公众号,都会是以爬虫+数据分析的形式展现的,这样很有趣,图表也很不错,今天了,我就来分享上一次在培训中的一个作品:猫眼电影爬虫及分析。

爬虫分析

这里是获取的是top100的电影数据,进行了跨页爬虫,获取的字段:电影名,主演,上映时间,评分,电影类型和时长。最后保存在csv文件中。

爬虫代码

import requests
from lxml import etree
import csv

'''
遇到不懂的问题?Python学习交流群:1136201545满足你的需求,资料都已经上传群文件,可以自行下载!
'''
headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36'
}

def get_url(url):
    res = requests.get(url,headers=headers)
    html = etree.HTML(res.text)
    infos = html.xpath('//dl[@class="board-wrapper"]/dd')
    for info in infos:
        name = info.xpath('div/div/div[1]/p[1]/a/text()')[0]
        info_url = 'http://maoyan.com' + info.xpath('div/div/div[1]/p[1]/a/@href')[0]
        star = info.xpath('div/div/div[1]/p[2]/text()')[0].strip()
        release_time = info.xpath('div/div/div[1]/p[3]/text()')[0].strip()
        score_1 = info.xpath('div/div/div[2]/p/i[1]/text()')[0]
        score_2 = info.xpath('div/div/div[2]/p/i[2]/text()')[0]
        score = score_1 + score_2
        # print(name,star,release_time,score,info_url)
        get_info(info_url,name,star,release_time,score)

def get_info(url,name,star,time,score):
    res = requests.get(url, headers=headers)
    html = etree.HTML(res.text)
    style = html.xpath('/html/body/div[3]/div/div[2]/div[1]/ul/li[1]/text()')[0]
    long_time = html.xpath('/html/body/div[3]/div/div[2]/div[1]/ul/li[2]/text()')[0].split('/')[1].strip()
    print(name,star,time,score,style,long_time)
    writer.writerow([name,star,time,score,style,long_time])

if __name__ == '__main__':
    fp = open('maoyan_2.csv','w',encoding='utf-8',newline='')
    writer = csv.writer(fp)
    writer.writerow(['name','star','time','score','style','long_time'])
    urls = ['http://maoyan.com/board/4?offset={}'.format(str(i)) for i in range(0, 100, 10)]
    for url in urls:
        get_url(url)

在这里插入图片描述

数据分析

总体情况

100部电影,平均得分9.0,平均电影时长128.63。
在这里插入图片描述

电影年份趋势

电影年份趋势不大,规律不太明显。
在这里插入图片描述

电影月份

大家看电影都知道,电影基本在假期上映更有热度,这里统计出来,发现下半年的电影比上半年电影好很多~
在这里插入图片描述

地区

中国和美国还是占了很多的,韩国和日本电影也很不错~
在这里插入图片描述

电影类型

电影大部分都是剧情的,爱情才是真谛啊。

在这里插入图片描述

关于Python技术储备

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,Python自动化测试学习等教程。带你从零基础系统性的学好Python!

👉[[CSDN大礼包:《python安装包&全套学习资料》免费分享]]安全链接,放心点击

一、Python学习大纲

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

二、Python必备开发工具

在这里插入图片描述

三、入门学习视频

四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。在这里插入图片描述

五、python副业兼职与全职路线

在这里插入图片描述

上述这份完整版的Python全套学习资料已经上传CSDN官方,如果需要可以微信扫描下方CSDN官方认证二维码 即可领取

👉[[CSDN大礼包:《python安装包&全套学习资料》免费分享]]安全链接,放心点击

Python中,我们可以使用BeautifulSoup库配合requests库来抓取网页信息,如猫眼电影的票房数据。首先,需要安装这两个库,可以使用pip命令: ```bash pip install beautifulsoup4 requests ``` 然后,你可以按照以下步骤编写代码: 1. **获取网页内容**: 使用`requests.get()`函数发送HTTP请求到猫眼电影的票房数据页面。 ```python import requests from bs4 import BeautifulSoup url = 'https://movie.douban.com/j/chart/top_list?type=200&interval_id=1008611596' response = requests.get(url) html_content = response.text ``` 2. **解析HTML内容**: 使用BeautifulSoup解析HTML,找到包含票房数据的部分。 ```python soup = BeautifulSoup(html_content, 'lxml') table = soup.find('table', {'class': 'chart'}) ``` 3. **提取数据**: 遍历表格中的行,查找并提取你需要的数据,比如电影名称、票房等字段。 ```python data_rows = table.find_all('tr', {'class': ['subject', 'title']}) 票房_data = [] for row in data_rows: cols = row.find_all('td') title = cols[1].find('a').text try: box_office = cols[2].string except TypeError: # 如果票房信息未显示,则处理异常 box_office = '无数据' 票房_data.append((title, box_office)) ``` 4. **数据存储和可视化**: 可以将数据保存到CSV文件或者使用matplotlib等库进行可视化,这里以简单地打印为例: ```python import csv import matplotlib.pyplot as plt with open('box_office.csv', 'w', newline='', encoding='utf-8') as csvfile: writer = csv.writer(csvfile) writer.writerow(['电影名', '票房']) writer.writerows(box_office_data) # 对于可视化,可以制作柱状图或线图展示票房数据 plt.bar([row[0] for row in box_office_data], [int(row[1]) for row in box_office_data]) plt.xlabel('电影名') plt.ylabel('票房') plt.title('猫眼电影票房数据') plt.show() ``` 记得在实际操作时尊重网站的robots.txt协议,合理使用爬虫,避免对服务器造成过大压力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值