DC学院爬虫学习笔记(五):使用pandas保存豆瓣短评数据

简介: 使用pandas保存豆瓣短评数据

保存数据的方法:

  • open函数保存
  • pandas包保存(本节课重点讲授)
  • csv模块保存
  • numpy包保存

使用open函数保存数据

1. open函数用法

  • 使用with open()新建对象
  • 写入数据
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) #写入数据,文件保存在当前工作目录
  • 可以使用以下方法得到当前工作目录或者修改当前工作目录
import os
os.getcwd()#得到当前工作目录
'C:\\Users\\Dell'
os.chdir()#修改当前工作目录,括号中传入工作目录的路径

2. open函数的打开模式

image

使用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

2. pandas保存数据到Excel

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

3. pandas保存数据到csv文件

  • 导入相关的库
  • 将数据储存为DataFrame对象
  • 保存数据到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')
          0         1         2
0  0.028705 -0.351902 -0.821870
1  0.279090  0.577875 -1.283121
2  1.563792 -0.146931 -0.587794
3 -0.272610 -0.342182  0.847883
4  1.380459  0.462965 -1.799529

实战

爬取《小王子》豆瓣短评的数据,并把数据保存为本地的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')

爬取《小王子》豆瓣短评前5页的短评数据

import requests
from lxml import etree
import pandas as pd

urls=['https://book.douban.com/subject/1084336/comments/hot?p={}'.format(str(i)) for i in range(1, 6, 1)] #通过观察的url翻页的规律,使用for循环得到5个链接,保存到urls列表中

pinglun = [] #初始化用于保存短评的列表
for url in urls: #使用for循环分别获取每个页面的数据,保存到pinglun列表
    r = requests.get(url).text
    s = etree.HTML(r)
    file = s.xpath('//div[@class="comment"]/p/text()')
    pinglun = pinglun + file

df = pd.DataFrame(pinglun) #把pinglun列表转换为pandas DataFrame
df.to_excel('pinglun.xlsx') #使用pandas把数据保存到excel表格
目录
相关文章
|
6天前
|
数据采集 存储 API
网络爬虫与数据采集:使用Python自动化获取网页数据
【4月更文挑战第12天】本文介绍了Python网络爬虫的基础知识,包括网络爬虫概念(请求网页、解析、存储数据和处理异常)和Python常用的爬虫库requests(发送HTTP请求)与BeautifulSoup(解析HTML)。通过基本流程示例展示了如何导入库、发送请求、解析网页、提取数据、存储数据及处理异常。还提到了Python爬虫的实际应用,如获取新闻数据和商品信息。
|
27天前
|
数据格式 Python
如何使用Python的Pandas库进行数据透视图(melt/cast)操作?
Pandas的`melt()`和`pivot()`函数用于数据透视。基本步骤:导入pandas,创建DataFrame,然后使用这两个函数转换数据格式。示例代码展示了如何通过`melt()`转为长格式,再用`pivot()`恢复为宽格式。输入数据是包含'Name'和'Age'列的DataFrame,最终结果经过转换后呈现出不同的布局。
39 6
|
27天前
|
索引 Python
如何使用Pandas进行数据合并?
Pandas的`merge()`, `join()`, `concat()`是数据合并的主要工具。基本步骤包括导入pandas,创建DataFrame,然后执行合并。示例中,创建了两个DataFrame `df1`和`df2`,通过`merge()`和`join()`进行外连接合并。`merge()`基于索引合并,`join()`默认也使用索引合并,展示了数据融合的不同方式。
12 0
|
27天前
|
数据挖掘 数据处理 索引
如何使用Python的Pandas库进行数据筛选和过滤?
Pandas是Python数据分析的核心库,其DataFrame数据结构便于数据操作。筛选与过滤数据主要包括:导入pandas,创建DataFrame,通过布尔索引、`query()`或`loc[]`、`iloc[]`方法筛选。
|
28天前
|
数据处理 Python
如何使用Python的Pandas库进行数据排序和排名?
Pandas在Python中提供数据排序和排名功能。使用`sort_values()`进行排序,如`df.sort_values(by='A', ascending=False)`进行降序排序;用`rank()`进行排名,如`df['A'].rank(ascending=False)`进行降序排名。多列操作可传入列名列表,如`df.sort_values(by=['A', 'B'], ascending=[True, False])`。
22 6
|
29天前
|
Python
如何使用Python的Pandas库进行数据缺失值处理?
Pandas在Python中提供多种处理缺失值的方法:1) 使用`isnull()`检查;2) `dropna()`删除含缺失值的行/列;3) `fillna()`用常数、前/后一个值填充;4) `interpolate()`插值填充。根据需求选择合适的方法处理数据缺失值。
15 0
|
29天前
|
索引 Python
如何使用Python的Pandas库进行数据合并和拼接?
【2月更文挑战第28天】【2月更文挑战第103篇】如何使用Python的Pandas库进行数据合并和拼接?
|
30天前
|
索引 Python
如何使用Python的Pandas库进行数据透视表(pivot table)操作?
如何使用Python的Pandas库进行数据透视表(pivot table)操作?
16 0
|
1月前
|
数据采集 存储 XML
给你一个具体的网站,你会如何设计爬虫来抓取数据?
【2月更文挑战第23天】【2月更文挑战第75篇】给你一个具体的网站,你会如何设计爬虫来抓取数据?
|
29天前
|
索引 Python
如何在Python中,Pandas库实现对数据的时间序列分析?
Pandas在Python中提供强大的时间序列分析功能,包括:1) 使用`pd.date_range()`创建时间序列;2) 通过`pd.DataFrame()`将时间序列转为DataFrame;3) `set_index()`设定时间列作为索引;4) `resample()`实现数据重采样(如按月、季度);5) `rolling()`进行移动窗口计算,如计算移动平均;6) 使用`seasonal_decompose()`进行季节性调整。这些工具适用于各种时间序列分析场景。
27 0