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

news2024/11/18 9:49:01

前言

大家早好、午好、晚好吖 ❤ ~欢迎光临本文章

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

  • 文件:txt、csv、excel、json等,保存数据量小。

  • 关系型数据库:mysql、oracle等,保存数据量大。

  • 非关系型数据库:Mongodb、Redis等键值对形式存储数据,保存数据量大。

  • 二进制文件:保存爬取的图片、视频、音频等格式数据。

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

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

import requests
from bs4 import BeautifulSoup

urls=['https://**网址不可放**/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()方法写入文件‘

保存数据到txt

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

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:702813599
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
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对象写入列表数据,示例代码如下:

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:702813599
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
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 对象写入字典数据,示例代码如下:

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文件中:

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:702813599
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
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数据的操作,

因为直接读取的数据是数据框格式,所以在爬虫、数据分析中使用非常广泛。

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

pandas保存数据到excel、csv

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

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:702813599
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
df = pd.DataFrame(comments_list) #把comments_list列表转换为pandas DataFrame
df.to_excel('comments.xlsx') #保存到excel表格
# df.to_csv('comments.csv')#保存在csv文件

结尾给大家推荐一个非常好的学习教程,希望对你学习Python有帮助!

48小时搞定全套爬虫教程!你和爬虫大佬只有一步之遥【python教程】

尾语

好了,今天的分享就差不多到这里了!

对下一篇大家想看什么,可在评论区留言哦!看到我会更新哒(ง •_•)ง

喜欢就关注一下博主,或点赞收藏评论一下我的文章叭!!!

最后,宣传一下呀~👇👇👇 更多源码、资料、素材、解答、交流 皆点击下方名片获取呀👇👇👇

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/984592.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【代码分享不会用?玩转Git,跟上节奏 快上车!】

一、安装 Git 客户端 这里为大家提供了windows版的Git客户端以及安装图文详解文档。百度网盘: https://pan.baidu.com/s/1CDu0Ke199pt3Ysv-QtWObA 提取码:8888 如果过期了请留言联系我。 二、注册码云账号 打开码云网站:https://gitee.com…

在Git中将本地分支推送到远程仓库

这里很明显 我git云端只有一个master分支 然后 我在本地创建了一个develop分支 然后 现在我想将他放在云端 首先 我们要执行 git checkout -b develop将本地切换到 develop 分支上 因为我这里已经选择的就是了 就不需要了 然后我们执行 git push origin develop这样 刷新云…

基于Java+SpringBoot+Vue前后端分离小学生身体素质测评管理系统设计和实现

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

高压放大器在机械制造领域的应用有哪些

在机械制造领域,高压放大器扮演着至关重要的角色。它们被广泛应用于各种机械设备和系统中,提供高压力、高精度的电信号放大。下面安泰电子将详细介绍高压放大器在机械制造领域的几个关键应用。 材料测试和强度试验 高压放大器广泛应用于材料测试和强度试…

手游联运平台都具备哪些功能?

手游联运平台是为了方便游戏发行商进行游戏发行和运营而提供的一种服务平台,具备多种功能以支持游戏在不同渠道上的推广和运营。以下是一些手游联运平台通常具备的功能: 多渠道发行:提供多种渠道,如应用商店、社交媒体、合作伙伴等…

回归与聚类算法系列②:线性回归

目录 1、定义与公式 2、应用场景 3、特征与目标的关系分析 线性回归的损失函数 为什么需要损失函数 损失函数 ⭐如何减少损失 4、优化算法 正规方程 梯度下降 优化动态图 偏导 正规方程和梯度下降比较 5、优化方法GD、SGD、SAG 6、⭐线性回归API 7、实例&#…

Deep Java Library(五)DJLServing java client demo

1.工具类HttpUtils package com.lihao.client; import java.io.IOException; import java.net.URI; import java.net.URLEncoder; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; import java.nio.charset.Standard…

2023 年高教社杯全国大学生数学建模竞赛题目 A 题 定日镜场的优化设计

A 题 定日镜场的优化设计 构建以新能源为主体的新型电力系统,是我国实现“碳达峰”“碳中和”目标的一项重要措施。塔式太阳能光热发电是一种低碳环保的新型清洁能源技术[1]。 定日镜是塔式太阳能光热发电站(以下简称塔式电站)收集太阳能的基…

WorkPlus Meet白板和文档共享功能上线,私有化视频会议全新升级

在迅猛发展的数字化时代,私有化视频会议成为企业高效沟通和协作的关键工具。WorkPlus Meet作为领先品牌,倾力打造私有化视频会议平台,并且最新上线了全新的白板和文档共享模块。本文将重点介绍WorkPlus Meet如何通过创新功能和稳定性&#xf…

金蝶迷路“云”丛中

​ 来源 | 科技新知 作者 | 樟稻 在云转型的浪潮中,金蝶曾一度领先用友数年,如今却在大模型上出现被逆转的迹象。 8月,金蝶推出自主研发的金蝶云苍穹GPT大模型,号称填补了国内第一个财务大模型的空白。而此前,用友…

【Axure教程】中继器网格拖动摆放

拖动摆放图标在移动端操作中扮演了重要的角色,允许用户自定义其设备的界面,使其更符合其偏好和使用习惯。这可以提高用户对设备的满意度和舒适度,将最常用的应用放置在易于访问的位置,从而提高使用效率。所以拖动摆放这类型操作不…

【区块链 | IPFS】IPFS节点搭建、文件上传、节点存储空间设置、节点上传文件chunk设置

一、创建ipfs节点 通过ipfs init在本地计算机建立一个IPFS节点 本文有些命令已经执行过了,就没有重新初始化。部分图片拷贝自先前文档,具体信息应以实物为准 ipfs init initializing IPFS node at /Users/CHY/.ipfs generating 2048-bit RSA keypair.…

Android Room数据库LiveData与ViewModel结合使用详解

Android Room是Android开发中的一个持久性库处理大量结构化数据的应用可极大地受益于在本地保留这些数据。最常见的使用场景是缓存相关的数据,这样一来,当设备无法访问网络时,用户仍然可以在离线状态下浏览该内容。 Room 持久性库在 SQLite …

使用vlookup函数将数据复制粘贴进筛选后的表中

1、待筛选表A 2、待复制的数据表B 3、筛选表A(性别男)。点击表A内的任意单元格,然后按下筛选的快捷键是ctrlshiftL 4、这是如果复制表B的奖金列,然后粘贴进表A的奖金列,出现这样情况 明显不对,而且少了一个(其实是453顺序粘贴到女…

uni-app 折叠自定义

uni-app的uni-collapse折叠组件样式修改 下面是修改后的样式 <uni-collapse accordion class"ze" v-model"isCollapse" click"toggleCollapse"><!-- 因为list默认带一条分隔线&#xff0c;所以使用 titleBorder"none" 取消…

windows打包uniapp应用p12证书和证书profile文件的制作方法

参考文章1&#xff1a; uniapp打包ios app所需的证书的制作流程-腾讯云开发者社区-腾讯云使用uniapp进行开发&#xff0c;既可以打包小程序&#xff0c;也可以打包app&#xff0c;假如需要打包app&#xff0c;需要p12格式的证书和一个证书profile文件&#xff0c;这个在uniapp…

算法通关村17关 | 盘点面试大热门之区间问题

1. 判断区间是否重叠 题目 LeetCode252 给定一个会议时间安排的数组intervals&#xff0c;每个会议时间都包括开始和结束时间&#xff0c;intervals[i] [start, endi],请你判断一个人是否能参加这里面的全部会议。 思路 遍历所有区间&#xff0c;判断下个区间开始是否小于上…

极轨气象卫星数据中的蝴蝶结(BOW-TIE)处理

李国春 极轨气象卫星多为多扫描单元&#xff08;比方10个SCAN&#xff09;与卫星轨道垂直方向并行扫描。这就像冬天下雪我们拿个笤帚扫院子&#xff0c;一边往前走一边往两边扫。由于极轨气象卫星扫描刈幅&#xff08;SWATH&#xff09;宽、探测距离越往边缘越长&#xff0c;加…

便捷高效的电能管理:利用PLC远程控制网关实时监控配电箱

配电箱是工业生产过程中必不可少的设备&#xff0c;其中的PLC&#xff08;可编程逻辑控制器&#xff09;是实现自动化控制的重要组成部分。为了实时监控配电箱的数据&#xff0c;并进行远程调试上下载与管理控制&#xff0c;我们可以使用PLC数据采集与远程控制网关。 PLC数据采…

RK3588烧录和环境部署

RK3588相关烧录固件请到firefly官网下载&#xff0c;firefly下载地址&#xff0c;环境配置步骤详细说明&#xff1a; 第1步&#xff1a;在win10下安装DriverAssitant目录下的名为DriverInstall.exe的驱动助手&#xff1b; 第2步&#xff1a;运行在RKDevTool目录下的RKDevTool.e…