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

  1. 云栖社区>
  2. 博客>
  3. 正文

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

kissjz 2018-02-22 22:03:07 浏览2603
展开阅读全文

保存数据的方法:

  • 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表格

网友评论

登录后评论
0/500
评论
kissjz
+ 关注