前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python爬虫数据存哪里|数据存储到文件的几种方式

Python爬虫数据存哪里|数据存储到文件的几种方式

作者头像
吾非同
发布2021-03-12 11:07:23
11.7K0
发布2021-03-12 11:07:23
举报
文章被收录于专栏:吾非同

爬虫请求解析后的数据,需要保存下来,才能进行下一步的处理,一般保存数据的方式有如下几种:

  • 文件:txt、csv、excel、json等,保存数据量小。
  • 关系型数据库:mysql、oracle等,保存数据量大。
  • 非关系型数据库:Mongodb、Redis等键值对形式存储数据,保存数据量大。
  • 二进制文件:保存爬取的图片、视频、音频等格式数据。

首先,爬取豆瓣读书《平凡的世界》的3页短评信息,然后保存到文件中。

https://book.douban.com/subject/1200840/comments/

「具体代码如下(忽略异常):」

代码语言:javascript
复制
import requests
from bs4 import BeautifulSoup

urls=['https://book.douban.com/subject/1200840/comments/?start={}&limit=20&status=P&sort=new_score'.format(str(i)) for i in range(0, 60, 20)] #通过观察的url翻页的规律,使用for循环得到3个链接,保存到urls列表中
print(urls)
dic_h = {
    "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"}
comments_list = [] #初始化用于保存短评的列表

for url in urls: #使用for循环分别获取每个页面的数据,保存到comments_list列表
    r = requests.get(url=url,headers = dic_h).text

    soup = BeautifulSoup(r, 'lxml')
    ul = soup.find('div',id="comments")
    lis= ul.find_all('p')

    list2 =[]
    for li in lis:
        list2.append(li.find('span').string)
    # print(list2)
    comments_list.extend(list2)
 print(comments_list)

爬到评论数据保存到列表中:

使用open()方法写入文件

关于Python文件的读写操作,可以看这篇文章快速入门Python文件操作

保存数据到txt

将上述爬取的列表数据保存到txt文件:

代码语言:javascript
复制
with open('comments.txt', 'w', encoding='utf-8') as f: #使用with open()新建对象f
    # 将列表中的数据循环写入到文本文件中
    for i in comments_list:
        f.write(i+"\n") #写入数据

保存数据到csv

CSV(Comma-Separated Values、逗号分隔值或字符分割值)是一种以纯文件方式进行数据记录的存储格式,保存csv文件,需要使用python的内置模块csv。

写入列表或者元组数据:创建writer对象,使用writerow()写入一行数据,使用writerows()方法写入多行数据。

「使用writer对象写入列表数据,示例代码如下:」

代码语言:javascript
复制
import csv

headers = ['No','name','age']
values = [
    ['01','zhangsan',18],
    ['02','lisi',19],
    ['03','wangwu',20]
]
with open('test1.csv','w',newline='') as fp:
    # 获取对象
    writer = csv.writer(fp)
    # 写入数据
    writer.writerow(headers) #写入表头
    writer.writerows(values) # 写入数据

写入字典数据:创建DictWriter对象,使用writerow()写入一行数据,使用writerows()方法写入多行数据。

「使用DictWriter对象写入字典数据,示例代码如下:」

代码语言:javascript
复制
import csv

headers = ['No','name','age']
values = [
    {"No":'01',"name":'zhangsan',"age":18},
    {"No":'02',"name":'lisi',"age":19},
    {"No":'03',"name":'wangwu',"age":20}]
with open('test.csv','w',newline='') as fp:
    dic_writer = csv.DictWriter(fp,headers)
    dic_writer.writeheader()# 写入表头
    dic_writer.writerows(values) #写入数据

「将上述爬取到的数据保存到csv文件中:」

代码语言:javascript
复制
import requests
import csv
from bs4 import BeautifulSoup
urls=['https://book.douban.com/subject/1200840/comments/?start={}&limit=20&status=P&sort=new_score'.format(str(i)) for i in range(0, 60, 20)] #通过观察的url翻页的规律,使用for循环得到5个链接,保存到urls列表中
print(urls)
dic_h = {
    "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"}
comments_list = [] #初始化用于保存短评的列表

for url in urls: #使用for循环分别获取每个页面的数据,保存到comments_list列表
    r = requests.get(url=url,headers = dic_h).text

    soup = BeautifulSoup(r, 'lxml')
    ul = soup.find('div',id="comments")
    lis= ul.find_all('p')

    list2 =[]
    for li in lis:
        list2.append(li.find('span').string)
    # print(list2)
    comments_list.extend(list2)

new_list = [[x] for x in comments_list] #列表生成器,将列表项转为子列表

with open("com11.csv", mode="w", newline="", encoding="utf-8") as f:
    csv_file = csv.writer(f) # 创建CSV文件写入对象
    for i in new_list:
        csv_file.writerow(i)

使用pandas保存数据

pandas支持多种文件格式的读写,最常用的就是csv和excel数据的操作,因为直接读取的数据是数据框格式,所以在爬虫、数据分析中使用非常广泛。关于pandas操作excel的方法,可以看这篇文章:pandas操作excel全总结

一般,将爬取到的数据储存为DataFrame对象(DataFrame 是一个表格或者类似二维数组的结构,它的各行表示一个实例,各列表示一个变量)。

pandas保存数据到excel、csv

pandas保存excel、csv,非常简单,两行代码就可以搞定:

代码语言:javascript
复制
df = pd.DataFrame(comments_list) #把comments_list列表转换为pandas DataFrame
df.to_excel('comments.xlsx') #保存到excel表格
# df.to_csv('comments.csv')#保存在csv文件
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-02-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 吾非同 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 使用open()方法写入文件
    • 保存数据到txt
      • 保存数据到csv
      • 使用pandas保存数据
        • pandas保存数据到excel、csv
        相关产品与服务
        文件存储
        文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档