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


    前言

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

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

    • 文件: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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

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

    使用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") #写入数据
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    保存数据到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) # 写入数据
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    写入字典数据:

    创建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) #写入数据
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    将上述爬取到的数据保存到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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32

    使用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文件
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

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

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

    尾语

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

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

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

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

  • 相关阅读:
    centos 搭建 zookeeper 高可用集群
    java计算机毕业设计基于安卓Android/微信小程序的游泳馆管理系统APP
    面试难题:Redis 分布式锁,真的完美无缺吗?
    Docker Compose和Consul
    dreamweaver家乡主题网页设计 DIV布局个人介绍网页模板代码 DW学生个人网站制作成品下载 HTML5期末大作业
    大厂秋招真题【前缀和】美团20230826秋招T5-平均数为k的最长连续子数组
    vuex+localStorage实现vue-element-admin模板刷新页面记忆选项卡
    ChatGPT付费创作系统V2.4.9独立版 +WEB端+ H5端 + 小程序端系统测试安装教程
    Design A Twitter
    通关GO语言04 集合类型:如何正确使用 array、lice 和 map?
  • 原文地址:https://blog.csdn.net/weixin_62853513/article/details/132738186