【python爬虫】—豆瓣电影Top250

news/2024/7/19 11:05:31 标签: python, 爬虫, 开发语言

豆瓣电影Top250

  • 豆瓣榜单简介
  • 需求描述
  • Python实现

豆瓣榜单简介

  • 豆瓣电影 Top 250 榜单是豆瓣网站上列出的评分最高、受观众喜爱的电影作品。这个榜单包含了一系列优秀的影片,涵盖了各种类型、不同国家和时期的电影。

需求描述

  • 使用python爬取top250电影,获取相应电影排名,电影名,星级, 打分和评论人数信息,将信息输出到Excel表格中。

Python实现

  • 获取爬取网页
python">def download_all_htmls(index = list(range(0, 250, 25))):
    htmls = []
    for idx in index:
        url = f"https://movie.douban.com/top250?start={idx}&filter="
        print("craw html:", url)

        # 豆瓣具有反爬虫机制,添加headers
        headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36'}
        r = requests.get(url, headers = headers)
        
        if r.status_code != 200:
            raise Exception("error")
        htmls.append(r.text)
    return htmls
  • 解析得到单个网页内容
python">def parse_single_heml(html):
    soup = BeautifulSoup(html, 'html.parser')
    article_items = soup.find('div', class_='article')\
            .find('ol', class_='grid_view')\
            .find_all('div', class_='item')
    
    datas = []
    for article_item in article_items:
        rank = article_item.find('div', class_='pic').find('em').get_text()
        info = article_item.find('div', class_='info')
        title = info.find('div', class_='hd').find('span', class_='title').get_text()
        stars = info.find('div', class_='bd').find('div', class_='star').find_all('span')

        rating_star = stars[0]["class"][0]
        rating_num = stars[1].get_text()
        comments = stars[3].get_text()

        datas.append({
            'rank': rank,
            'title': title,
            'rating_star': rating_star.replace("rating","").replace("-t",""),
            'rating_num': rating_num,
            'comments': comments.replace("人评价", "")
        })
    return datas
  • 爬取相关内容,并将结果写入Excel
python">import requests
from bs4 import BeautifulSoup
import pandas as pd
import pprint
import json

htmls = download_all_htmls()
all_datas = []
for html in htmls:
    all_datas.extend(parse_single_heml(html))
df = pd.DataFrame(all_datas)
df.to_excel("practice03_豆瓣电影top250.xlsx", index=False)
  • 结果展示
    在这里插入图片描述

http://www.niftyadmin.cn/n/4987067.html

相关文章

HCIP-OpenStack组件之网络服务Neutron(ovs、ovn)

1、Linux网络虚拟化基础 Neutron最为核心的工作是对二层物理网络的抽象与管理,物理服务器虚拟化后,虚拟机的网络功能由虚拟网卡(vNIC)和虚拟交换机(vSwitch)提供,各个vNIC连接在vSwitch的端口上…

使用 Python编程: 下载 YouTube 音频的桌面应用程序

最近我开发了一个使用 Python 编写的桌面应用程序,可以方便地下载 YouTube 音频。该应用程序使用了 wxPython、yt_dlp 和 tqdm 库,提供了一个简单直观的用户界面,并具备高效的下载功能。 C:\pythoncode\new\youtube-dl-audio.py 程序介绍 …

LLMs之Code:Code Llama的简介、安装、使用方法之详细攻略

LLMs之Code:Code Llama的简介、安装、使用方法之详细攻略 导读:2023年08月25日(北京时间),Meta发布了Code Llama,一个可以使用文本提示生成代码的大型语言模型(LLM)。Code Llama是最先进的公开可用的LLM代码任务,并有潜…

js--记录

js循环对象顺序错乱 // for (var key in produce) {// dateList.push(key)// arr1.push(produce[key])// }// for (var key in rate) {// arr2.push((rate[key]) * 100)// }// console.log(dateList);Object.keys(produce).sort().forEach(item > {console.log(item, …

memcpy 函数

目录 函数介绍: 函数解析: memcpy函数复制的数据长度 内存重叠 凑不出元素的字节数 模拟memcpy 函数介绍: memcpy函数是一个用于内存复制的函数,声明在 string.h 中(C是 cstring)。 其原型是&…

创建聊天机器人:模拟人工客服跟用户对话,产品帮助中心必备功能

根据某知名行业报告研究表明,有超过80%的客户互动将无需人工处理,对于重复性的大部分的客户服务问题都可以直接交给由智能聊天机器人来解决。 尤其是对于产品帮助中心而言,从自动消息到可视化搜索,人工智能聊天客服机器人让企业能…

2023年9月重庆/南京/深圳CDGA/CDGP数据治理认证考试报名

据DAMA中国官方网站消息,2023年度第三期DAMA中国CDGA和CDGP认证考试定于2023年9月23日举行。 报名通道现已开启,相关事宜通知如下: 考试科目: 数据治理工程师(CertifiedDataGovernanceAssociate,CDGA) 数据治理专家(CertifiedDataGovernanc…

无涯教程-Android Intent Standard Extra Data函数

下表列出了各种重要的Android Intent Standard Extra Data。您可以查看Android官方文档以获取额外数据的完整列表- Sr.NoExtra Data & Description1 EXTRA_ALARM_COUNT 用作AlarmManager intents(意图)中的int Extra字段,以告诉正在调用的应用程序intents(意图)释放了多少…