当前位置: 首页 > news >正文

上海企业都用什么网站怎么创建域名

上海企业都用什么网站,怎么创建域名,网站建设时间进度表模板,Wordpress也【Python爬虫】专栏简介:本专栏是 Python 爬虫领域的集大成之作,共 100 章节。从 Python 基础语法、爬虫入门知识讲起,深入探讨反爬虫、多线程、分布式等进阶技术。以大量实例为支撑,覆盖网页、图片、音频等各类数据爬取&#xff…

【Python爬虫】专栏简介:本专栏是 Python 爬虫领域的集大成之作,共 100 章节。从 Python 基础语法、爬虫入门知识讲起,深入探讨反爬虫、多线程、分布式等进阶技术。以大量实例为支撑,覆盖网页、图片、音频等各类数据爬取,还涉及数据处理与分析。无论是新手小白还是进阶开发者,都能从中汲取知识,助力掌握爬虫核心技能,开拓技术视野。

目录

  • 一、引言
  • 二、将爬取数据存储为文本文件
    • 2.1 纯文本格式优势
    • 2.2 按行存储数据实现
  • 三、使用 CSV 格式存储结构化数据
    • 3.1 CSV 格式简介
    • 3.2 创建 CSV 文件
    • 3.3 写入数据
    • 3.4 读取数据
  • 四、使用 JSON 格式存储复杂数据结构
    • 4.1 JSON 格式特点
    • 4.2 数据转换
    • 4.3 数据读取与还原
  • 五、总结


一、引言

在我们的 Python 爬虫专栏系列文章中,已经深入探讨了从 Python 基础语法到网页数据解析等多个关键环节。而在爬虫项目里,数据存储是不容忽视的重要部分。当我们成功从网页中抓取到数据后,如何高效、稳定地存储这些数据,以便后续的分析、处理和使用,就成为了爬虫开发的关键任务之一。

数据存储的重要性不言而喻。想象一下,我们花费大量时间和精力编写爬虫程序,从互联网上收集了海量的数据,如果没有合适的存储方式,这些辛苦得来的数据就可能丢失、损坏或者难以访问。好的数据存储方案不仅能确保数据的完整性和安全性,还能为后续的数据处理和分析工作提供便利,提升整个项目的价值。

本文将聚焦于文件存储这一常见且基础的数据存储方式,详细介绍如何将爬取的数据存储为文本文件、使用 CSV 格式存储结构化数据以及运用 JSON 格式存储复杂数据结构。通过实际的代码示例和详细的讲解,希望能帮助大家掌握这些数据存储的基本技巧,为爬虫项目的成功实施打下坚实的基础。

二、将爬取数据存储为文本文件

2.1 纯文本格式优势

纯文本格式是一种简单且通用的数据存储格式,它具有诸多显著优势。首先,简单性是其一大特点,纯文本文件仅包含字符数据,不包含任何格式控制信息,如字体、字号、颜色等,这使得它的结构非常清晰明了,易于理解和处理。无论是使用专业的文本编辑器,还是操作系统自带的记事本工具,都能轻松打开和查看纯文本文件。

其次,纯文本格式具有极强的兼容性。几乎所有的操作系统,包括 Windows、Mac OS、Linux 等,以及各种编程语言和应用程序,都原生支持纯文本格式。这意味着,无论在何种环境下,我们都无需担心因格式不兼容而无法读取或处理数据。例如,我们在 Python 中生成的纯文本数据文件,在 Java 项目中同样可以方便地读取和解析。

再者,纯文本格式的文件占用存储空间较小。由于不包含额外的格式信息,纯文本文件的大小通常比其他格式(如富文本格式、二进制格式等)要小很多。这在存储大量数据时,能够有效节省磁盘空间,降低存储成本。

2.2 按行存储数据实现

在 Python 中,将爬取的数据按行存储到文本文件是一项非常基础且常见的操作。下面通过一个具体的代码示例来展示其实现过程:

# 假设我们已经爬取到了一些数据,存储在一个列表中
crawled_data = ["数据1", "数据2", "数据3", "数据4", "数据5"]# 打开文件,使用'w'模式表示写入,如果文件不存在则创建,存在则覆盖原有内容
with open('crawled_data.txt', 'w', encoding='utf-8') as file:for data in crawled_data:# 将每一条数据写入文件,并添加换行符'\n',确保按行存储file.write(data + '\n')

在上述代码中,我们首先定义了一个包含爬取数据的列表crawled_data。然后,使用with open()语句打开一个名为crawled_data.txt的文件,其中’w’表示以写入模式打开文件,encoding='utf-8’指定了文件的编码格式为 UTF - 8,这是一种常用的字符编码,能够支持多种语言的字符。

在with语句的代码块中,我们使用for循环遍历crawled_data列表中的每一个数据项。对于每一个数据项,通过调用文件对象的write()方法将其写入文件,并在末尾添加换行符’\n’。这样,每一条数据都会独占一行存储在文本文件中。

with语句的好处在于,当代码块执行完毕后,无论是否发生异常,文件都会自动关闭,无需我们手动调用close()方法。这不仅简化了代码,还能有效避免因忘记关闭文件而导致的资源泄漏问题。

如果我们需要读取这个按行存储的文本文件,可以使用以下代码:

# 打开文件,使用'r'模式表示读取
with open('crawled_data.txt', 'r', encoding='utf-8') as file:# 读取所有行的数据,返回一个列表,每一个元素对应文件中的一行lines = file.readlines()for line in lines:# 去除每行末尾的换行符line = line.strip('\n')print(line)

在这段读取代码中,同样使用with open()语句以读取模式’r’打开文件。然后,通过调用文件对象的readlines()方法读取文件的所有行,这些行数据会以列表的形式返回。接着,我们再次使用for循环遍历这个列表,对每一行数据调用strip(‘\n’)方法去除末尾的换行符,并将处理后的行数据打印输出。

三、使用 CSV 格式存储结构化数据

3.1 CSV 格式简介

CSV(Comma-Separated Values),即逗号分隔值,是一种以纯文本形式存储表格数据的文件格式。它的结构简单直观,由任意数目的记录组成,记录间通常以换行符分隔,每条记录又由字段组成,字段间最常见的分隔符为逗号 ,也可以使用其他字符如分号、制表符等。

CSV 格式具有极高的通用性和广泛的应用场景。在数据处理领域,它常被用于不同程序之间转移表格数据,比如从数据库程序导出数据,或在电子表格程序中进行数据交换。几乎所有的文本编辑器和表格处理软件,如 Microsoft Excel、LibreOffice Calc、Google Sheets 等,都支持 CSV 文件的导入和导出。同时,大多数编程语言,包括 Python、R、Java 等,也都提供了对 CSV 文件的读写支持,这使得 CSV 成为数据存储和交换的理想选择之一。

3.2 创建 CSV 文件

在 Python 中,使用内置的csv模块可以方便地创建 CSV 文件。下面是一个简单的示例代码,展示了如何创建一个 CSV 文件并写入文件头:

import csv# 定义CSV文件的文件名
filename = 'example.csv'# 打开文件,使用'w'模式表示写入,newline=''参数用于避免在Windows系统下写入时出现额外空行
with open(filename, 'w', newline='', encoding='utf-8') as csvfile:# 创建一个CSV写入器对象writer = csv.writer(csvfile)# 写入文件头,文件头是一个包含列名的列表header = ['姓名', '年龄', '性别']writer.writerow(header)

在上述代码中,首先使用import csv导入csv模块,这是使用 Python 处理 CSV 文件的基础。然后,通过open()函数以写入模式’w’打开一个名为example.csv的文件,并使用encoding=‘utf-8’指定文件编码为 UTF - 8,以支持中文字符等多种字符集。newline=’'参数的作用是确保在写入 CSV 文件时,不会出现额外的空行,这在 Windows 系统下尤为重要。

接着,通过csv.writer(csvfile)创建一个 CSV 写入器对象writer,这个对象提供了用于写入 CSV 数据的方法。最后,定义一个包含列名的列表header,并使用写入器对象的writerow()方法将文件头写入 CSV 文件。writerow()方法接受一个列表作为参数,列表中的每个元素会被作为 CSV 文件中的一个字段,以逗号分隔写入文件的一行。

3.3 写入数据

当创建好 CSV 文件并写入文件头后,就可以将爬取到的结构化数据写入文件中。假设我们已经爬取到了一些人员信息,存储在一个列表中,每个人员信息又是一个包含姓名、年龄和性别的子列表,下面是将这些数据写入 CSV 文件的代码示例:

import csv# 定义CSV文件的文件名
filename = 'example.csv'# 假设已经爬取到的数据,这是一个包含多个人员信息的列表
data = [['张三', 25, '男'],['李四', 30, '女'],['王五', 28, '男']
]# 打开文件,使用'w'模式表示写入,newline=''参数用于避免在Windows系统下写入时出现额外空行
with open(filename, 'w', newline='', encoding='utf-8') as csvfile:# 创建一个CSV写入器对象writer = csv.writer(csvfile)# 写入文件头header = ['姓名', '年龄', '性别']writer.writerow(header)# 写入数据,使用writerows()方法可以一次性写入多行数据writer.writerows(data)

在这段代码中,除了前面创建 CSV 文件和写入文件头的部分,新增了一个包含爬取数据的列表data。然后,在with语句的代码块中,使用写入器对象的writerows()方法将data中的所有数据一次性写入 CSV 文件。writerows()方法接受一个包含多个列表的列表作为参数,每个内部列表代表 CSV 文件中的一行数据。

如果数据中包含特殊字符,如逗号、双引号等,csv模块会自动进行处理,确保数据的正确写入。例如,如果某个人的姓名中包含逗号,csv模块会自动将该字段用双引号括起来,以避免混淆。

3.4 读取数据

读取 CSV 文件中的数据也是一项常见的操作,在 Python 中同样可以使用csv模块轻松实现。下面是一个从 CSV 文件中读取数据的示例代码:

import csv# 定义CSV文件的文件名
filename = 'example.csv'# 打开文件,使用'r'模式表示读取
with open(filename, 'r', encoding='utf-8') as csvfile:# 创建一个CSV读取器对象reader = csv.reader(csvfile)# 读取文件头header = next(reader)print("文件头:", header)# 逐行读取数据for row in reader:print("数据行:", row)

在上述代码中,首先使用open()函数以读取模式’r’打开 CSV 文件,并通过encoding='utf-8’指定文件编码。然后,创建一个 CSV 读取器对象reader。

使用next(reader)方法可以读取文件的第一行,即文件头,并将其存储在变量header中,然后打印输出文件头信息。接着,使用for循环遍历读取器对象reader,reader是一个可迭代对象,每次迭代会返回文件中的一行数据,以列表的形式呈现,将每一行数据打印输出,即可查看文件中的所有数据。

除了使用csv.reader以列表形式读取数据,还可以使用csv.DictReader以字典形式读取数据,这样可以通过字段名来访问数据,更加方便和直观。以下是使用csv.DictReader的示例代码:

import csv# 定义CSV文件的文件名
filename = 'example.csv'# 打开文件,使用'r'模式表示读取
with open(filename, 'r', encoding='utf-8') as csvfile:# 创建一个CSV字典读取器对象reader = csv.DictReader(csvfile)# 逐行读取数据,每行数据是一个字典,键为文件头的字段名for row in reader:print("姓名:", row['姓名'], "年龄:", row['年龄'], "性别:", row['性别'])

在这个示例中,csv.DictReader会自动将文件头作为字典的键,每一行数据作为对应的值,形成一个字典。在for循环中,通过键来访问每一行数据中的各个字段,使得代码更加易读和易于维护。

四、使用 JSON 格式存储复杂数据结构

4.1 JSON 格式特点

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它在存储复杂数据结构时展现出了独特的优势。JSON 以文本形式存储数据,其结构基于两种基本的模式:键值对的集合(对象)和值的有序列表(数组) 。这种结构使得它能够轻松地表示复杂的数据嵌套关系,例如包含多个层级的字典和列表嵌套的数据结构。

JSON 的可读性非常强,即使对于没有编程背景的人来说,也能很容易理解其数据结构。它使用简洁的符号表示,如大括号{}表示对象,方括号[]表示数组,冒号:分隔键值对,逗号,分隔元素,使得数据的组织和呈现一目了然。

在可解析性方面,JSON 也表现出色。几乎所有的现代编程语言都提供了对 JSON 的解析和生成支持。在 Python 中,通过内置的json模块,我们可以方便地将 JSON 字符串转换为 Python 原生的数据结构,如字典、列表等,反之亦然。这使得 JSON 在不同系统之间进行数据交换和存储时,能够高效地被处理和解析。

4.2 数据转换

在 Python 中,使用json模块可以轻松地将字典、列表等数据结构转换为 JSON 字符串进行存储。下面通过几个具体的代码示例来展示这一过程:
首先,将一个简单的字典转换为 JSON 字符串:

import json# 创建一个字典
data_dict = {'name': '张三', 'age': 25, 'city': '北京'}# 使用json.dumps()方法将字典转换为JSON格式的字符串
json_string = json.dumps(data_dict, ensure_ascii=False, indent=4)# 打印转换后的JSON字符串
print(json_string)

在上述代码中,json.dumps()函数用于将 Python 字典data_dict转换为 JSON 字符串。ensure_ascii=False参数的作用是确保非 ASCII 字符(如中文)能够正确显示,而不是被转义为 Unicode 编码。indent=4参数则是为了美化输出,使得生成的 JSON 字符串具有更好的可读性,每个层级缩进 4 个空格。运行上述代码,输出的 JSON 字符串如下:

{"name": "张三","age": 25,"city": "北京"
}

接下来,展示如何将包含列表和字典嵌套的数据结构转换为 JSON 字符串:

import json# 创建一个包含列表和字典嵌套的数据结构
complex_data = {'name': '李四','age': 30,'hobbies': ['阅读', '旅行', '运动'],'address': {'province': '广东','city': '深圳','district': '南山区'}
}# 使用json.dumps()方法将复杂数据结构转换为JSON格式的字符串
json_string = json.dumps(complex_data, ensure_ascii=False, indent=4)# 打印转换后的JSON字符串
print(json_string)运行这段代码,输出的 JSON 字符串为:
{"name": "李四","age": 30,"hobbies": ["阅读","旅行","运动"],"address": {"province": "广东","city": "深圳","district": "南山区"}
}

从上述示例可以看出,无论数据结构多么复杂,json.dumps()函数都能准确地将其转换为符合 JSON 格式的字符串,方便进行存储和传输。

4.3 数据读取与还原

当数据以 JSON 格式存储在文件中后,我们可以使用json模块的load()函数从文件中读取数据,并将其还原为 Python 原生的数据结构。以下是一个读取 JSON 文件并还原数据的代码示例:

import json# 定义JSON文件的文件名
filename = 'data.json'# 打开文件,使用'r'模式表示读取
with open(filename, 'r', encoding='utf-8') as jsonfile:# 使用json.load()函数从文件中读取数据并还原为Python数据结构data = json.load(jsonfile)# 打印还原后的数据
print(data)

在上述代码中,首先使用open()函数以读取模式’r’打开名为data.json的文件,并指定编码为utf-8。然后,通过json.load(jsonfile)将文件中的 JSON 数据读取并转换为 Python 原生的数据结构(如字典、列表等),存储在变量data中。最后,打印输出还原后的数据。

假设data.json文件中的内容如下:

{"name": "王五","age": 28,"hobbies": ["音乐", "电影", "美食"],"address": {"province": "四川","city": "成都","district": "武侯区"}
}

运行上述读取代码后,data变量将包含一个与 JSON 文件内容对应的 Python 字典,我们可以像操作普通字典一样对其进行访问和处理,例如:

print("姓名:", data['name'])
print("年龄:", data['age'])
print("爱好:", data['hobbies'])
print("地址:", data['address']['province'], data['address']['city'], data['address']['district'])

通过这种方式,我们可以方便地从存储的 JSON 文件中获取数据,并将其用于后续的数据分析、处理等操作。

五、总结

在爬虫项目的数据存储环节,文本文件、CSV 和 JSON 这三种文件存储方式各有其独特的优势和适用场景。

文本文件以其简单性和通用性,在存储纯文本数据、对数据结构和查询要求不高的场景中表现出色 。按行存储的方式使得数据的读写操作都较为直观,易于理解和实现,是处理简单数据的首选方式之一。

CSV 格式则专注于结构化数据的存储,它以表格形式呈现数据,非常适合存储和处理具有固定列结构的数据,如人员信息、财务数据等。其与电子表格软件和数据分析工具的良好兼容性,使得数据的后续分析和处理变得更加便捷。

JSON 格式凭借对复杂数据结构的强大表现力,在处理包含嵌套关系的字典、列表等数据时发挥着重要作用。它的可读性和可解析性,使其成为在不同系统和编程语言之间进行数据交换的理想选择,尤其在 Web 应用开发和数据接口交互中广泛应用。

在实际的爬虫项目中,我们应根据所爬取数据的特点和后续使用需求,灵活、合理地选择存储方式。对于简单的文本数据,优先考虑文本文件存储;对于结构化的表格数据,CSV 格式是不错的选择;而当遇到复杂的数据结构时,JSON 格式则能更好地满足需求。通过对不同存储方式的深入理解和熟练运用,我们能够更高效地管理和利用爬取到的数据,为后续的数据分析、挖掘和应用提供坚实的基础。

http://www.shuangfujiaoyu.com/news/36393.html

相关文章:

  • 淘宝客网站模板下载seo新方法
  • 即墨网站设计新闻热点大事件
  • 宁波有哪些公司做网站微信公众号的推广
  • 邢台住房和城乡建设部网站seo必备工具
  • 重庆定制型网站建设sem竞价代运营公司
  • 你接入的网站不属于同一个主体百度搜索指数的数据来源
  • 聊城 网站制作sem竞价推广公司
  • 如何进入网站管理员界面网络推广业务
  • 网站做多长时间才会有流量青岛关键词优化平台
  • 网站设计师培训学校广州百度竞价开户
  • 那些网站做的比较好seo销售话术开场白
  • ping网站域名搜狗seo怎么做
  • 镇江网站推广排名临沂seo公司
  • Python 查询网站开发免费域名申请个人网站
  • 苏州网站制作出名 乐云践新写手接单平台
  • 网站访问加速器枸橼酸西地那非片
  • 怎样做档口批发网站河北网站seo地址
  • 建设网站预算合肥seo招聘
  • 公司做网站要多长时间审核推销广告
  • 徐州企业自助建站制作网页完整步骤代码
  • 毕设做网站答辩稿自媒体平台app下载
  • 淘宝网网站设计分析上海seo优化公司kinglink
  • 利于seo优化的网站seo教程 seo之家
  • 网站被k的怎么办徐州seo
  • 前端培训出来工资多少seo网站建设公司
  • 做网站策划师的图片如何做营销活动
  • 如何运营网站app地推接单平台
  • 微网站建设方案书北京网站优化外包
  • 徐州做企业网站长沙专业竞价优化首选
  • wordpress首页图片成都seo正规优化