【Python爬虫】(四)使用 Pandas 保存豆瓣短评数据

本文详细介绍了使用Python进行数据保存的多种方法,包括open函数、pandas、csv和numpy包的使用,重点讲解了pandas在数据分析和保存数据到Excel及CSV文件的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

保存数据的方法

  • open函数保存
  • pandas包保存(重点)
  • csv模块保存
  • numpy包保存

使用open函数保存数据

  1. open函数用法

    1. 使用with open()新建对象
    2. 写入数据
import requests
from lxml import etree

url = 'https://book.douban.com/subject/1084336/comments/'
r = requests.get(url).text

s = etree.HTML(r)
file = s.xpath('//div[@class="comment"]/p/text()')

with open('pinglun.txt', 'w', encoding='utf-8') as f: #使用with open()新建对象f
	for i in file:
    	print(i)
    	f.write(i) #写入数据,文件保存在当前工作目录
  1. 可以使用以下方法得到当前工作目录或者修改当前工作目录
import os
os.getcwd()#得到当前工作目录
os.chdir()#修改当前工作目录,括号中传入工作目录的路径
  • open函数的打开模式

  • 参数用法
    r只读。若不存在文件会报错。
    w只写。若不存在文件会自动新建。
    a附加到文件末尾。
    rb, wb, ab操作二进制
    r+读写模式打开

    使用pandas保存数据

    1. Python数据分析的工具包

      • numpy: (Numerical Python的简称),是高性能科学计算和数据分析的基础包
      • pandas:基于Numpy创建的Python包,含有使数据分析工作变得更加简单的高级数据结构和操作工具
      • matplotlib:是一个用于创建出版质量图表的绘图包(主要是2D方面)
      • 常见的导入方法:
      import pandas as pd #导入pandas
      import numpy as np #导入numpy
      import matplotlib.pypolt as plt #导入matplotlib
      

    注意:pandas 、numpy和matplotlib都需要事先安装

  • pandas保存数据到Excel

    • 导入相关的库
    • 将爬取到的数据储存为DataFrame对象(DataFrame 是一个表格或者类似二维数组的结构,它的各行表示一个实例,各列表示一个变量)
    • to_excel() 实例方法:用于将DataFrame保存到Excel
    df.to_excel('文件名.xlsx', sheet_name = 'Sheet1') #其中df为DataFrame结构的数据,sheet_name = 'Sheet1'表示将数据保存在Excel表的第一张表中
    
    1. read_excel() 方法:从excel文件中读取数据
    pd.read_excel('文件名.xlsx', 'Sheet1', index_col=None, na_values=['NA'])
    
  • pandas保存数据到csv文件

    1. 导入相关的库
    2. 将数据储存为DataFrame对象
    3. 保存数据到csv文件
    import pandas as pd
    import numpy as np
    df = pd.DataFrame(np.random.randn(6,3)) #创建随机值并保存为			DataFrame结构
    print(df.head())
    df.to_csv('numpppy.csv')
    
  • 实战

    结合之前学习的获取数据、解析数据的知识,爬取《小王子》豆瓣短评的数据,并把数据保存为本地的excel表格

    import requests
    from lxml import etree
    
    url = 'https://book.douban.com/subject/1084336/comments/'
    r = requests.get(url).text
    
    s = etree.HTML(r)
    file = s.xpath('//div[@class="comment"]/p/text()')
    
    import pandas as pd
    df = pd.DataFrame(file)
    df.to_excel('pinglun.xlsx')
    

    注意:如果运行以上程序出现ImportError: No module named ‘openpyxl’错误,那么需要先安装“openpyxl”模块。

### 使用Python编写豆瓣爬虫并进行数据可视化分析 #### 准备工作 为了实现这一目标,需要安装一些必要的库。可以利用`pip install requests beautifulsoup4 matplotlib wordcloud pandas`命令来完成这些依赖项的安装。 #### 数据获取阶段 构建一个简单的爬虫程序用于从豆瓣网站上抓取有关《你好,李焕英》这部电影的相关评论信息。这里需要注意的是,在实际操作过程中应当遵循各网站的服务条款以及robots协议的规定[^1]: ```python import requests from bs4 import BeautifulSoup import time import random def get_movie_reviews(movie_id, start_page=0, end_page=10): reviews = [] headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)', } for page_num in range(start_page, end_page + 1): url = f"https://movie.douban.com/subject/{movie_id}/reviews?start={page_num * 20}" response = requests.get(url=url, headers=headers) soup = BeautifulSoup(response.text, "html.parser") review_items = soup.find_all('div', class_='review-item') for item in review_items: try: title = item.select_one('.title a').get_text(strip=True) content = item.select_one('.short-content').get_text(strip=True).replace(" (展开)", "") reviews.append({ 'title': title, 'content': content }) except AttributeError as e: continue sleep_time = round(random.uniform(1, 3), 2) time.sleep(sleep_time) return reviews ``` 此部分代码实现了对指定范围内页面上的短评内容提取功能,并将其存储在一个列表当中以便于后续处理。 #### 数据预处理环节 对于所获得的数据集而言,可能存在着缺失值、重复记录等问题,因此有必要对其进行清洗与整理。此外还可以考虑去除停用词等自然语言处理技术的应用以提高最终效果的质量。 #### 可视化展示成果 当准备好干净整洁的数据之后就可以着手准备制作各种图表啦!下面给出绘制词云图的一个例子作为参考: ```python from wordcloud import WordCloud import jieba import matplotlib.pyplot as plt def generate_word_cloud(reviews): all_texts = ''.join([r['content'] for r in reviews]) cut_words = '/'.join(jieba.cut(all_texts)) wc = WordCloud( font_path='simhei.ttf', background_color="white", max_font_size=80, width=800, height=600 ).generate(cut_words) plt.imshow(wc.recolor(colormap='Pastel1_r'), alpha=0.9) plt.axis("off") plt.show() ``` 上述函数接收之前收集到的所有影评文本字符串拼接而成的整体输入参数,经过分词后传递给WordCloud类实例对象生成一张美观大方又充满艺术感的作品出来!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值