python爬虫豆瓣电影TOP250

以下代码是一个简单的网络爬虫程序,用于从豆瓣电影 Top250 页面获取电影信息并保存到 CSV 文件中。以下是代码的一些主要步骤和功能:

  1. 导入模块:代码开始部分导入了 requestsetree 模块用于网络请求和数据解析。

  2. get_html(start) 函数:这个函数用于发起网络请求,获取豆瓣电影 Top250 页面中每页的电影数据。它通过 XPath 解析页面内容,提取电影的标题、链接、导演、评分、评分人数和概要等信息,并调用 save_data() 函数保存到 CSV 文件中。

  3. save_data() 函数:保存电影信息到 CSV 文件中。

  4. 程序入口 if __name__ == '__main__': 部分:在这里,程序会创建或清空一个名为"豆瓣TOP250.csv"的 CSV 文件并写入表头,"名称,网址,导演,评分,评分人数,概要"。然后,循环遍历 Top250 页面的不同部分,并调用 get_html() 函数来获取数据并保存到 CSV 文件中。

  5. 数据清洗与处理:代码中还包含了一些数据清洗和处理的步骤,如读取 CSV 文件、处理缺失值、转换数据类型、处理异常值、数据去重和保存清洗后的数据到csv文件中。

    python 复制代码
    # 导入模块
    import requests  # 网络请求模块
    from lxml import etree  # 数据解析模块
    
    # 发起网络请求
    def get_html(start):
        print('正在爬取', start)
        url = f'https://movie.douban.com/top250?start={start}&filter='
    
        # 请求头信息,防止反爬虫操作
        headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36 Edg/125.0.0.0'}
        res = requests.get(url=url, headers=headers)
    
        print(res.status_code)
    
        html = etree.HTML(res.text)
    
        lis = html.xpath('//*[@id="content"]/div/div[1]/ol/li')
    
        # 解析数据(xpath解析)
        for li in lis:
            title = ''.join(li.xpath('./div/div[2]/div[1]/a/span[1]/text()')).replace('\n', '').replace(' ', '')
            src = ''.join(li.xpath('./div/div[2]/div[1]/a/@href')).replace('\n', '').replace(' ', '')
            dictor = ''.join(li.xpath('./div/div[2]/div[2]/p[1]/text()')).replace('\n', '').replace(' ', '')
            score = ''.join(li.xpath('./div/div[2]/div[2]/div/span[2]/text()')).replace('\n', '').replace(' ', '')
            comment = ''.join(li.xpath('./div/div[2]/div[2]/div/span[4]/text()')).replace('\n', '').replace(' ', '')
            summary = ''.join(li.xpath('./div/div[2]/div[2]/p[2]/span/text()')).replace('\n', '').replace(' ', '')
            # movies.append({
            #   'title':title,
            #  'src':src,
            # 'score':score,
            # 'comment':comment,
            # 'summary':summary,
            # })
            save_data(title, src, dictor, score, comment, summary)
    
            # print(title,src,dictor,score,comment,summary)
    
            
    
    def save_data(title, src, dictor, score, comment, summary):
        with open('./豆瓣TOP250.csv', 'a+', encoding='utf-8-sig') as f:
            movies_info = f'{title},{src},{dictor},{score},{comment},{summary}\n'
            f.write(movies_info)
    
    if __name__ == '__main__':
        with open('./豆瓣TOP250.csv', 'a+', encoding='utf-8-sig') as f:
            head = '名称,网址,导演,评分,评分人数,概要\n'
            f.write(head)
        for start in range(0, 250, 25):
            get_html(start)
            
            
    import pandas as pd
    # 读取数据
    df = pd.read_csv('豆瓣TOP250.csv')
    # 查看数据信息
    print(df.info())
    # 处理缺失值
    df.dropna(inplace=True)
    # 转换数据类型
    df['评分'] = df['评分'].astype(float)
    # 处理异常值
    df = df[df['评分'] >= 0 & df['评分'] <= 10]
    # 数据去重
    df.drop_duplicates(inplace=True)
    # 保存清洗后的数据
    df.to_csv('豆瓣TOP250.csv', index=False)
相关推荐
weixin_4684668516 分钟前
pandas操作Excel文件
python·自动化·excel·numpy·pandas·数据处理·dataframe
IT毕设梦工厂21 分钟前
计算机毕业设计选题推荐-摇滚音乐鉴赏网站-Java/Python项目实战
java·spring boot·python·django·毕业设计·源码·课程设计
薛慕昭22 分钟前
PYQT上位机开发--安装python环境
开发语言·python·pyqt
IT毕设梦工厂24 分钟前
计算机毕业设计选题推荐-猫眼电影数据可视化分析-Python爬虫-k-means算法
python·django·毕业设计·源码·课程设计·scipy·k-means
wu_huashan26 分钟前
理解torch.argmax() ,我是错误的
pytorch·python·深度学习
棕豆兔&31 分钟前
Java + Selenium自动化测试中,模拟鼠标滚动页面的实现办法
java·python·selenium
夏季疯36 分钟前
学习笔记 韩顺平 零基础30天学会Java(2024.8.26)
java·开发语言·数据结构
莲雾flops39 分钟前
集合及数据结构第十二节(下)————哈希表、字符串常量池和练习题
java·开发语言·数据结构·学习·哈希算法·散列表
软件测试曦曦43 分钟前
Python自动化测试【selenium面试题】
开发语言·自动化测试·软件测试·python·功能测试·selenium·程序人生