【python爬虫】—豆瓣电影Top250

豆瓣电影Top250

豆瓣榜单简介

  • 豆瓣电影 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)
  • 结果展示
相关推荐
IT小郭.2 分钟前
使用 Docker Desktop 安装 Neo4j 知识图谱
windows·python·sql·docker·知识图谱·database·neo4j
后青春期的诗go3 分钟前
基于Rust语言的Rocket框架和Sqlx库开发WebAPI项目记录(一)
开发语言·后端·rust
qh0526wy1 小时前
金融接口基方法Python
windows·python·金融
景天科技苑1 小时前
【Rust闭包】rust语言闭包函数原理用法汇总与应用实战
开发语言·后端·rust·闭包·闭包函数·rust闭包·rust闭包用法
史迪仔01121 小时前
Python生成器:高效处理大数据的秘密武器
前端·数据库·python
uyeonashi2 小时前
【Boost搜索引擎】构建Boost站内搜索引擎实践
开发语言·c++·搜索引擎
再睡一夏就好2 小时前
从硬件角度理解“Linux下一切皆文件“,详解用户级缓冲区
linux·服务器·c语言·开发语言·学习笔记
TIF星空3 小时前
【使用 C# 获取 USB 设备信息及进行通信】
开发语言·经验分享·笔记·学习·microsoft·c#
Smile丶凉轩5 小时前
Qt 界面优化(绘图)
开发语言·数据库·c++·qt
reasonsummer6 小时前
【办公类-100-01】20250515手机导出教学照片,自动上传csdn+最大化、最小化Vs界面
开发语言·python