首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
1.1 HTTP基本原理
1.2 Web 网页基础
1.3 爬虫的基本原理
1.4 Session和Cookie
1.5 代理的基本原理
1.6 多线程和多进程的基本原理
2.1 urllib的使用
2.2 requests的使用
2.3 正则表达式
2.4 httpx的使用
2.5 基础爬虫案例实战
3.1 XPath的使用
3.2 Beautiful Soup的使用
3.3 pyquery的使用
3.4 parsel 的使用
4.1 TXT 文本文件存储
4.2 JSON 文件存储
4.3 CSV 文件存储
4.4 MySQL 存储
4.5 MongoDB 文档存储
4.6 Redis缓存存储
4.7 Elasticsearch 搜索引擎存储
4.8 RabbitMQ 的使用
5.1 什么是 Ajax
5.2 Ajax分析方法
5.3 Ajax 分析与爬取实战
6.1 协程的基本原理
6.2 aiohttp的使用
6.3 aiohttp 异步爬取实战
7.1 Selenium 的使用
7.2 Splash 的使用
7.3 Pyppeteer 的使用
7.4 Playwright 的使用
7.5 Selenium 爬取实战
7.6 Pyppeteer 爬取实战
7.7 CSS 位置偏移反爬案例分析与爬取实战
7.8 字体反爬案例分析与爬取实战
8.1 使用 OCR 技术识别图形验证码
8.2 使用 OpenCV 识别滑动验证码的缺口
8.3 使用深度学习识别图形验证码
8.4 使用深度学习识别滑动验证码的缺口
8.5 使用打码平台识别验证码
8.6 手机验证码的自动化处理
9.1 代理的设置
9.2 代理池的维护
9.3 付费代理的使用
9.4 ADSL 拨号代理的搭建方法
9.5 代理反爬案例爬取实战
10.1 模拟登录的基本原理
10.2 基于Session和Cookie的模拟登录爬取实战
10.3 基于JWT的模拟登录爬取实战
10.4 大规模账号池的搭建
11.1 网站加密和混淆技术简介
11.2 浏览器调试常用技巧
11.3 JavaScript Hook 的使用
11.4 无限 debugger 的原理与绕过
11.5 使用 Python 模拟执行 JavaScript
11.6 使用 Node.js 模拟执行 JavaScript
11.7 浏览器环境下 JavaScript 的模拟执行
11.8 AST 技术简介
11.9 使用 AST 技术还原混淆代码
11.10 特殊混淆案例的还原
11.11 WebAssembly 案例分析和爬取实战
11.12 JavaScript 逆向技巧总结
11.13 JavaScript 逆向爬取实战
当前位置:
首页>>
技术小册>>
Python3网络爬虫开发实战(上)
小册名称:Python3网络爬虫开发实战(上)
### 4.1 TXT 文本文件存储 在网络爬虫开发中,数据存储是一个至关重要的环节。爬虫从网络上抓取的数据需要被有效地存储起来,以便后续的分析、处理或展示。TXT文本文件作为一种简单、通用且易于处理的文件格式,在网络爬虫的数据存储中扮演着重要角色。本章将详细介绍如何在Python中使用TXT文本文件来存储爬取的数据,包括文件的打开与关闭、数据的写入与读取,以及处理大规模数据时的一些优化策略。 #### 4.1.1 TXT文件基础 TXT文本文件是一种纯文本文件,不包含任何格式设置或元数据(如字体、颜色等),仅由文本字符组成。这种格式因其简单性和跨平台性而被广泛应用。在Python中,处理TXT文件主要通过内置的`open()`函数来实现,该函数用于打开文件,并返回一个文件对象,该对象提供了一系列的方法用于读写文件。 #### 4.1.2 打开与关闭文件 ##### 打开文件 使用`open()`函数打开文件时,需要指定文件名和模式。模式决定了文件是只读、只写、追加还是其他。对于TXT文本文件,常用的模式有: - `'r'`:只读模式(默认)。如果文件不存在,抛出`FileNotFoundError`。 - `'w'`:写入模式。如果文件已存在,则覆盖;如果文件不存在,则创建新文件。 - `'a'`:追加模式。写入的数据会被追加到文件末尾,如果文件不存在,则创建新文件。 - `'r+'`、`'w+'`、`'a+'`:分别对应读写、读写(覆盖)、读写并追加模式。 示例代码: ```python # 打开文件以读取 with open('example.txt', 'r') as file: content = file.read() print(content) # 打开文件以写入 with open('example.txt', 'w') as file: file.write('Hello, World!') # 打开文件以追加 with open('example.txt', 'a') as file: file.write('\nAnother line.') ``` 注意,使用`with`语句可以自动管理文件的打开和关闭,这是处理文件时的最佳实践。 #### 4.1.3 写入数据到TXT文件 向TXT文件写入数据,通常使用文件对象的`write()`或`writelines()`方法。`write()`方法用于写入单个字符串,而`writelines()`方法接受一个字符串列表作为参数,并将它们逐一写入文件(注意,不会自动添加换行符,除非在字符串中明确指定)。 示例代码: ```python # 使用write()方法 with open('data.txt', 'w') as file: file.write('First line.\n') file.write('Second line.\n') # 使用writelines()方法 lines = ['Third line.\n', 'Fourth line.\n'] with open('data.txt', 'a') as file: file.writelines(lines) ``` #### 4.1.4 读取TXT文件内容 读取TXT文件内容,常用的方法有`read()`、`readline()`和`readlines()`。 - `read()`:读取文件全部内容,并返回一个字符串。 - `readline()`:读取文件中的一行,并返回一个字符串。如果到达文件末尾,则返回空字符串。 - `readlines()`:读取文件中所有行,并将它们作为一个字符串列表返回。 示例代码: ```python # 读取全部内容 with open('data.txt', 'r') as file: content = file.read() print(content) # 逐行读取 with open('data.txt', 'r') as file: line = file.readline() while line: print(line, end='') # end='' 防止print自动添加换行 line = file.readline() # 使用readlines() with open('data.txt', 'r') as file: lines = file.readlines() for line in lines: print(line, end='') ``` #### 4.1.5 处理大规模数据 当处理大规模数据时,直接一次性读取或写入整个文件可能会导致内存溢出或效率低下。为此,可以采用以下策略: 1. **分批处理**:将大文件分成小块,逐块处理。可以使用`readline()`或固定大小的缓冲区来实现。 2. **使用生成器**:Python的生成器允许你按需生成数据,这对于处理大文件特别有用。通过定义一个生成器函数,可以逐个或逐块读取文件内容,而无需一次性加载到内存中。 3. **多线程/多进程**:对于I/O密集型任务,如文件读写,可以使用多线程或多进程来加速处理过程。但需注意Python的全局解释器锁(GIL)对多线程并行执行CPU密集型任务的影响。 #### 4.1.6 示例:爬取网页内容并保存为TXT文件 以下是一个简单的网络爬虫示例,它使用`requests`库获取网页内容,并将内容保存为TXT文件。 ```python import requests def fetch_url_content(url): try: response = requests.get(url) response.raise_for_status() # 如果请求失败,则抛出HTTPError异常 return response.text except requests.RequestException as e: print(f"Error fetching {url}: {e}") return None def save_to_txt(content, filename): with open(filename, 'w', encoding='utf-8') as file: file.write(content) if __name__ == "__main__": url = 'http://example.com' content = fetch_url_content(url) if content: save_to_txt(content, 'webpage_content.txt') print("Content saved successfully.") ``` 在这个示例中,我们首先定义了`fetch_url_content()`函数来抓取网页内容,然后使用`save_to_txt()`函数将内容保存到TXT文件中。注意,在保存文件时指定了`encoding='utf-8'`来确保能够正确处理Unicode字符。 #### 结语 TXT文本文件作为一种简单而强大的数据存储方式,在网络爬虫开发中扮演着重要角色。通过掌握文件的打开与关闭、数据的写入与读取,以及处理大规模数据的策略,你可以更加高效地存储和管理爬取的数据。此外,将爬虫抓取的数据保存到TXT文件中,也为后续的数据分析、处理或展示提供了便利。
上一篇:
3.4 parsel 的使用
下一篇:
4.2 JSON 文件存储
该分类下的相关小册推荐:
Python编程轻松进阶(五)
实战Python网络爬虫
Python与办公-玩转Word
Python3网络爬虫开发实战(下)
Python爬虫入门与实战开发(上)
Python自动化办公实战
Python合辑5-格式化字符串
Python机器学习实战
Python合辑11-闭包函数
Python合辑3-字符串用法深度总结
Python合辑1-Python语言基础
Python编程轻松进阶(三)