Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python爬虫数据存哪里|数据存储到文件的几种方式

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

作者头像
吾非同
发布于 2021-03-12 03:07:23
发布于 2021-03-12 03:07:23
12.1K03
代码可运行
举报
文章被收录于专栏:吾非同吾非同
运行总次数:3
代码可运行

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

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

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

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
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
代码运行次数:0
运行
AI代码解释
复制
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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
课程 CS50-CS | 『撕书教授』经典重现!哈佛大学最受欢迎CS导论课
Class Central网站汇聚了知名MOOC课程,并进行了分类和评价。Class Central发布的学习报告中,哈佛大学CS50系列课程常年占据CS榜单高位,一次次印证了CS50难以撼动的地位与高口碑。
ShowMeAI
2021/10/23
1.6K0
课程 CS50-CS | 『撕书教授』经典重现!哈佛大学最受欢迎CS导论课
从小白到 Github 斩获 90k Star! 聊聊学习编程的正确姿势!
如果你看到这篇文章,恭喜你!不论是初入编程领域的小白,还是已经在工作几年的老手,这篇文章都将对你有很大的帮助。建议看到最后。相信我!一定会有收货。
Guide哥
2020/07/16
8860
从小白到 Github 斩获 90k Star! 聊聊学习编程的正确姿势!
知乎6000+赞推荐:程序员常用的10多个技术网站
作为一个每天都泡在电脑面前的程序员来说,选对一些学习、交流的地方就显得尤为重要--可以在第一时间解决我们的问题,可以立马Get到一门新技术的教程,可以分享我们学习的心得体验。
养码场
2018/08/13
2.4K0
珍藏已久的 OS 学习网站拿出来分享给大家
平常经常看推荐各种资源教程的,感觉有很多文章稂莠不齐,这次我来推荐点硬核的网站,包你有收获。
杨源鑫
2020/11/02
1.3K0
珍藏已久的 OS 学习网站拿出来分享给大家
16个免费学习Python的网站和教程(2024年最新资源)
🔥 Python免费学习资源汇总,2024年最全面指南! 🚀 免费学习Python的最佳网站和教程,你不能错过!
猫头虎
2024/06/12
4.6K0
程序员行业大洗牌?!
高薪编程岗一直是码农们梦寐以求的职业,想想中高阶工程师的年薪,熬夜早起都有了积极性。 ▲信息源于知乎 但是随着越来越多的人才涌入,程序员圈的内卷和薪资倒挂也很严重。 很多资深猿猿们技术迭代跟不上,年龄越大职场越不占优势,甚至还要随时面临HR的“优化通知”。 就技术层面而言,由于简单易上手的脚本语言受到追捧、低代码工具的流行,拥有自主设计能力的研发工程师越来越少,这就导致高级程序员和底层程序员之间的断层越来越严重。 底层程序员很难再用工作年限换一个高薪未来。那保持学习,不断接触前沿技术是不是就能稳坐C
芋道源码
2022/03/14
4030
程序员需知的 58 个网站,墙裂推荐!
程序员是一个需要不断学习的职业。幸运的是,在这个互联网时代,知识就在那里,等着我们去获取。
开发者技术前线
2020/11/23
3.1K0
程序员需知的 58 个网站,墙裂推荐!
转载:程序员都应该访问的最佳网站
(注:内容非本人原创,文自订阅号:SegmentFault,特此声明!) 一些对程序员非常有用的网站。 在学习CS的时候有一些你必须知道的有用的站点来获取通知为了你的技术储备和学习新知识。这里是一个你应该访问的不是非常全面的一些站点的列表,这个列表会不断更新,只要我能得到链接,你也可以通过添加你知道的来为此做出贡献 索引 当你遇到问题时 新闻篇 针对新手的代码训练 针对那些想开始一个小的项目但是无从下手的人 通用编码建议 编码风格 通用工具 面试准备 纪录片
Zoctopus
2018/06/04
1K0
自学一路走来,这些私藏的实用软件/网站资源贡献给你们
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。
帅地
2019/10/30
1.9K0
自学一路走来,这些私藏的实用软件/网站资源贡献给你们
人才缺口达30万!程序员拿下这个证书有多香?!
“程序员能纯靠技术渡过中年危机吗?” ▲截图来源于知乎 知乎上的这个提问,吸引了大批码农留言,热赞均表示“能,很难”。因为难逃这两种结局: • 没精力学习,技术一迭代,被淘汰。 •  有技术,90%公司不需要,年纪大了被淘汰。 这一现象的背后反映了程序员的技术与岗位被高度垄断,即: 90%的资源集中在1%的互联网公司。 这也使得大部分程序员,刚一入职便看到了技术的尽头。 只是一味埋头学习显然不行,找到能让技术充分赋能的岗位,同样重要! 那么,程序员怎么才能接触前沿技术,并顺利入职匹配的岗位呢? 大厂高薪技
double
2022/03/10
2.3K0
涨姿势!2020最好的 10 大国外编程学习网站!
在这篇文章中,我收集了 10 个最佳的编程学习网站,掌握编程技能可能是帮助你走出舒适区的一大步,新手程序员通常会觉得程序员市场的竞争太激烈,工作太有挑战性等。
Guide哥
2020/08/07
5K0
涨姿势!2020最好的 10 大国外编程学习网站!
一键下载中国大学/网易云课堂/慕课网等课程视频和课件
一键下载中国大学 MOOC(icourse163.org)的课程,包括视频、课件、附件和字幕,方便离线观看 https://github.com/xixixixixiao/mooc-downloader
苏生不惑
2020/11/10
12.2K0
一键下载中国大学/网易云课堂/慕课网等课程视频和课件
MOOC教学,什么最重要?
MOOC教学的关键,不在于录视频,也不在于做幻灯。最重要的是赋能。赋能的具体方法,是在认知资源和学习者之间,建立丰富而有效的链接。
王树义
2018/08/22
8500
MOOC教学,什么最重要?
打破信息差,这些学习提升渠道你一定要知道!
在这个信息爆炸的时代,我们每天都面临着大量的信息流。无论是通过社交媒体、新闻网站、电视、广播还是其他渠道,我们都被大量的信息包围着。然而,我们需要认识到,信息的数量并不代表质量,而且我们必须学会选择和过滤信息。
Python兴趣圈
2023/11/10
8690
打破信息差,这些学习提升渠道你一定要知道!
想好这些问题,你再去当程序员好吗?
2020年的春招已经持续了4个多月,小E也一直陪伴着学员改简历、写自我介绍和训练笔试和复盘面试,看着他们努力的找工作,成为一个新鲜的程序员。 如今春招也接近尾声,学员们经过自己的努力,以及我这个老程序员(老脸一红)的指导,也依次找到了自己心仪的工作,以下是我和学员们说过至少一次的建议,希望可以帮到即将成为新程序员的你。 我把建议分成三个类别: 1. 如何选择行业及职业:你真的想做程序员吗? 2. 如何从事程序员这份工作:为了找到心仪的工作,你应该如何去做? 3. 如何选择心仪的公司:这么多人一起竞争
腾讯NEXT学位
2020/05/12
1.6K0
20年老架构师,劝我多看看这几个网站
我不是严格意义上的程序员,从事数据开发工作,经常会使用Python、SQL、VBA等来处理数据,这几天和一个40多岁、从事了接近20年数据开发的数据架构师朋友老刘聊天,他推荐了几个Python编程开发和数据分析时经常会刷的几个网站,当然这些网站也适合从事其他语言开发的程序员们,这里分享下。
派大星的数据屋
2024/04/12
1850
20年老架构师,劝我多看看这几个网站
深夜里,程序员最喜欢去的网站竟然是 ...
程序员的工作和日常生活非常的枯燥,这里给大家推荐一些程序员经常使用的网站,也是我经常上的一些网站,我将会从多个角度、多个层面分别为你整理归纳这些网站和论坛
cxuan
2020/11/23
8110
深夜里,程序员最喜欢去的网站竟然是 ...
写给自学者的入门指南
在IT工程师和培训机构多如牛毛的时代,拜师学艺并不难。但自学编程对于毫无基础的同学来说却可能是个问题,相信有过类似经历的朋友都有一把辛酸泪和一肚不吐不快的体会。让我们从一个故事说起... 故事 某君在
ThoughtWorks
2018/04/17
9890
写给自学者的入门指南
统计学公开课大盘点
统计学博大精深,用途广泛,是一门非常重要的基础课程。在接触了一些统计学公开课后,发现网络上还有很多的免费的在线统计学课程可以用来学习和复习相关的知识点,只是缺乏一些整理和汇总。之前课程图谱微博做了很多课程的推荐,但是发现微博上信息散落的很凌乱,不系统,所以决定在这里做一些系统的课程资源整理和汇总。
统计学家
2019/04/23
3.1K0
一个机械人到半只程序猿的进化之旅
开篇语 好吧,名字是不是很有新意?写出来的刹那我差点在自习室感动到落泪,但是后来想想,好像有点文不对题啊~~但是谁叫这个标题这么帅呢?一向务实的我都忍不住败倒在这么霸气的名字下面,吾神,终光照世人~~~让我来扫盲,给那些迷茫的大学生伙伴们举点例子,然后指引下他们的方向吧! 程序猿的日常自黑 正文 笔者背景交代 我是一名现在在武汉某“职校”--人称“关山口男子职业技术学院”的地方就读的大三学生,本科专业是机械,这算是我们学校最好的专业了。当初高考的时候,为了不浪费自己全省一千多名的分数,经历了
用户1687088
2018/05/07
1.1K0
一个机械人到半只程序猿的进化之旅
推荐阅读
相关推荐
课程 CS50-CS | 『撕书教授』经典重现!哈佛大学最受欢迎CS导论课
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验