您的位置:首页 > 文旅 > 旅游 > python爬虫豆瓣电影TOP250

python爬虫豆瓣电影TOP250

2024/12/23 14:26:14 来源:https://blog.csdn.net/m0_65347933/article/details/140475084  浏览:    关键词:python爬虫豆瓣电影TOP250

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

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

  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文件中。

    # 导入模块
    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)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com