腾讯云阻止网站访问手机可以搭建网站么

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

腾讯云阻止网站访问,手机可以搭建网站么,站斧浏览器,wordpress缩略图中大大【Python爬虫】专栏简介#xff1a;本专栏是 Python 爬虫领域的集大成之作#xff0c;共 100 章节。从 Python 基础语法、爬虫入门知识讲起#xff0c;深入探讨反爬虫、多线程、分布式等进阶技术。以大量实例为支撑#xff0c;覆盖网页、图片、音频等各类数据爬取#xff… 【Python爬虫】专栏简介本专栏是 Python 爬虫领域的集大成之作共 100 章节。从 Python 基础语法、爬虫入门知识讲起深入探讨反爬虫、多线程、分布式等进阶技术。以大量实例为支撑覆盖网页、图片、音频等各类数据爬取还涉及数据处理与分析。无论是新手小白还是进阶开发者都能从中汲取知识助力掌握爬虫核心技能开拓技术视野。 目录 一、MongoDB 初印象二、开启 MongoDB 之旅安装与启动2.1 下载与安装2.2 配置环境变量2.3 启动服务2.4 连接数据库 三、Python 与 MongoDB 的奇妙联动pymongo 库的使用3.1 安装 pymongo 库3.2 连接 MongoDB 数据库3.3 选择数据库和集合 四、文档型数据的存储与查询艺术4.1 插入文档4.1.1 插入单条数据4.1.2 插入多条数据 4.2 查询文档4.2.1 查询所有文档4.2.2 查询单个文档4.2.3 带条件查询4.2.4 模糊查询 4.3 更新文档4.3.1 更新单个文档4.3.2 更新多个文档 4.4 删除文档4.4.1 删除单个文档4.4.2 删除多个文档 五、总结与展望 一、MongoDB 初印象 在当今大数据蓬勃发展的时代数据量呈爆炸式增长数据类型也变得丰富多样。面对海量且复杂的数据传统的关系型数据库在处理能力和灵活性上逐渐显露出局限性。非关系型数据库应运而生MongoDB 便是其中的佼佼者在众多领域中发挥着重要作用。 MongoDB 是一款基于分布式文件存储的开源文档型数据库它使用二进制 JSONBSON作为存储格式这种格式在保留 JSON 灵活性的同时还具备更高的存储和传输效率 。与传统关系型数据库相比MongoDB 有着诸多显著优势。例如它的文档模型非常灵活无需预先定义严格的表结构这使得存储和处理各种非结构化和半结构化数据变得轻而易举。在爬虫数据存储方面爬虫抓取到的数据往往结构多变使用 MongoDB 就可以轻松应对无需频繁修改数据库结构。 此外MongoDB 具备出色的水平扩展性通过分片Sharding技术能够将数据分散存储在多个服务器节点上从而有效应对海量数据的存储和高并发访问需求确保系统在数据量增长时仍能保持良好的性能。它还支持丰富的查询操作符和聚合管道能够满足复杂的数据查询和分析需求为后续的数据处理和挖掘提供强大支持。 在爬虫应用场景中选择 MongoDB 存储数据有着诸多考量。爬虫抓取的数据通常包含网页内容、图片链接、商品信息等各种类型数据结构差异较大。MongoDB 灵活的文档模型可以很好地适应这些数据方便数据的存储和管理。同时随着爬虫规模的扩大和数据量的不断增加MongoDB 的水平扩展能力能够保障系统的稳定运行不会因为数据量的增长而导致性能瓶颈。例如在一些大型电商爬虫项目中需要处理海量的商品数据MongoDB 的高性能读写和扩展性就能够确保数据的快速存储和高效查询为后续的数据分析和商业决策提供有力支持。 二、开启 MongoDB 之旅安装与启动 在深入了解 MongoDB 的强大功能之前我们首先需要完成它的安装与启动并掌握连接数据库的方法。这是我们后续使用 MongoDB 进行数据存储和管理的基础。下面将详细介绍在不同操作系统下完成这些操作的具体步骤。 2.1 下载与安装 Windows 系统访问 MongoDB 官方网站https://www.mongodb.com/try/download/community 根据 Windows 操作系统版本32 位或 64 位选择合适的 MongoDB Community Server 安装包进行下载。下载完成后双击安装包.msi 文件启动安装向导。在安装过程中可自定义安装路径默认路径为 C:\Program Files\MongoDB\Server\ 。同时可选择是否将 MongoDB 安装为服务安装为服务后系统启动时 MongoDB 会自动运行。Linux 系统以 Ubuntu 为例首先导入公钥以确保软件包的完整性和真实性。在终端运行命令wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add - 。对于较新的 Ubuntu 版本可能需要使用 curl -fsSL https://pgp.mongodb.com/server-6.0.asc | sudo gpg -o /usr/share/keyrings/mongodb-server-6.0.gpg –dearmor 。接着创建列表文件在 /etc/apt/sources.list.d/ 目录下创建 mongodb-org-6.0.list 文件并添加内容 deb [ archamd64,arm64 signed-by/usr/share/keyrings/mongodb-server-6.0.gpg ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/6.0 multiverse 注意focal 是 Ubuntu 20.04 的代号若使用其他版本 Ubuntu需替换为相应代号 。完成上述步骤后更新软件包列表并安装 MongoDB运行命令 sudo apt-get update 和 sudo apt-get install -y mongodb-org。macOS 系统推荐使用 Homebrew 安装。如果 Mac 未安装 Homebrew先打开终端并按照官网https://brew.sh/ 指引安装。安装 Homebrew 后在终端运行 brew tap mongodb/brew 和 brew install mongodb-community6.0 这里以安装 MongoDB 6.0 为例可根据需求替换版本号。也可手动安装访问 MongoDB 官方网站下载适合 macOS 的.tgz 安装包解压后将文件移动到合适位置如 /usr/local/mongodb 。 2.2 配置环境变量 安装完成后需要将 MongoDB 的二进制文件目录添加到系统的环境变量 PATH 中这样才能在命令提示符的任何目录下运行 MongoDB 相关命令。 Windows 系统右键点击 “此电脑”选择 “属性”在弹出窗口中点击 “高级系统设置”。在 “系统属性” 窗口中选择 “环境变量”在 “系统变量” 中找到 “Path” 变量并点击 “编辑”。点击 “新建”将 MongoDB 的 bin 目录路径如 C:\Program Files\MongoDB\Server\your_version\bin 添加进去然后依次点击 “确定” 保存设置。Linux 系统打开终端编辑 .bashrc 文件如果使用 zsh则编辑 .zshrc 文件在文件末尾添加 export PATH/your_mongodb_install_path/bin:\(PATH 将 /your_mongodb_install_path 替换为实际的 MongoDB 安装路径。保存文件后运行 source ~/.bashrc 或 source ~/.zshrc 使配置生效。macOS 系统若使用 Homebrew 安装Homebrew 会自动配置环境变量。手动安装时编辑 ~/.bash_profile 或 ~/.zshrc 文件添加 export PATH/usr/local/mongodb/bin:\)PATH 然后运行 source ~/.bash_profile 或 source ~/.zshrc 使配置生效。 2.3 启动服务 Windows 系统如果在安装过程中选择将 MongoDB 安装为服务可通过 “服务” 窗口找到 MongoDB 服务并启动也可在命令提示符中以管理员身份运行 net start MongoDB 来启动服务。若未安装为服务打开命令提示符进入 MongoDB 的安装目录下的 bin 文件夹运行 mongod.exe 来启动 MongoDB 数据库服务。也可以指定数据存储路径例如mongod –dbpath C:\data\db 假设数据存储路径为 C:\data\db 。Linux 系统安装完成后使用命令 sudo service mongod start 启动 MongoDB 服务或者使用 systemctl 命令适用于使用 systemd 的系统sudo systemctl start mongod 。macOS 系统使用 Homebrew 安装的可通过 brew services start mongodb-community6.0 启动服务版本号根据实际安装情况修改。手动安装的在终端进入 MongoDB 的二进制文件目录运行 mongod 命令来启动服务也可指定数据存储路径如 mongod –dbpath /usr/local/mongodb/data/db 。 2.4 连接数据库 命令行工具连接在启动 MongoDB 服务后打开新的命令行窗口运行 mongo 命令即可连接到本地默认的 MongoDB 数据库默认端口为 27017。如果要连接到特定的数据库可以使用 mongo yourDatabaseName 将 yourDatabaseName 替换为实际的数据库名称。如果 MongoDB 设置了用户名和密码连接时需要指定用户名和密码例如mongosh –host localhost:27017 -u root -p ‘yourpassword’ 。可视化客户端连接以 Robo 3T 为例启动 Robo 3T 工具后点击界面左上角的 “Create” 按钮创建一个新的连接。在弹出的对话框中填写连接信息“Name” 为连接的名称可自定义“Address” 为 MongoDB 服务器的地址可以是 IP 地址或者域名“Port” 为 MongoDB 服务器的端口号默认为 27017如果需要身份验证勾选 “Authentication”并填写 “Database”要连接的数据库名称、“User Name”用户名和 “Password”密码。填写完毕后点击 “Save” 按钮保存连接然后在左侧连接列表中双击该连接即可连接到 MongoDB 数据库 。 三、Python 与 MongoDB 的奇妙联动pymongo 库的使用 在成功安装并启动 MongoDB 后我们就可以使用 Python 来操作它了。pymongo 库是 Python 操作 MongoDB 的官方驱动提供了丰富的方法来实现对 MongoDB 数据库的各种操作。下面将详细介绍如何使用 pymongo 库来连接 MongoDB 数据库、选择数据库和集合并进行基本的数据操作。 3.1 安装 pymongo 库 在使用 pymongo 库之前首先需要确保它已经安装在你的 Python 环境中。如果你使用的是 pip 包管理器安装过程非常简单只需在命令行中执行以下命令 pip install pymongo如果你的系统中同时安装了 Python2 和 Python3并且希望使用 pip3 来安装 pymongo 库可以使用以下命令 pip3 install pymongo安装完成后你可以在 Python 交互式环境中导入 pymongo 库来验证是否安装成功 import pymongo如果没有报错说明 pymongo 库已经成功安装。 3.2 连接 MongoDB 数据库 安装好 pymongo 库后我们就可以在 Python 代码中连接 MongoDB 数据库了。在 pymongo 库中使用 MongoClient 类来建立与 MongoDB 服务器的连接。如果 MongoDB 运行在本地并且使用默认的端口号 27017连接代码非常简单 from pymongo import MongoClient# 连接本地MongoDB服务器 client MongoClient()上述代码创建了一个 MongoClient 对象它默认连接到本地主机localhost的 27017 端口。如果 MongoDB 服务器运行在其他主机上或者使用了非默认端口你需要在 MongoClient 的构造函数中指定主机地址和端口号 。例如MongoDB 服务器运行在 192.168.1.100 端口号为 27018 连接代码如下 from pymongo import MongoClient# 连接到指定主机和端口的MongoDB服务器 client MongoClient(192.168.1.100, 27018)如果 MongoDB 设置了用户名和密码还需要在连接字符串中添加认证信息。假设用户名是 user 密码是 password 连接代码如下 from pymongo import MongoClient# 连接到指定主机和端口的MongoDB服务器并进行认证 client MongoClient(mongodb://user:password192.168.1.100:27018/)3.3 选择数据库和集合 连接到 MongoDB 服务器后接下来需要选择要操作的数据库和集合。在 pymongo 库中通过 MongoClient 对象来选择数据库。如果数据库不存在MongoDB 会在插入数据时自动创建。选择数据库的方式有两种一种是使用属性访问的方式另一种是使用字典访问的方式。假设我们要选择名为 test_db 的数据库代码如下

使用属性访问方式选择数据库

db1 client.test_db# 使用字典访问方式选择数据库 db2 client[test_db]这两种方式是等效的你可以根据自己的喜好选择使用。选择数据库后就可以选择集合了。集合类似于关系型数据库中的表是存储文档的地方。同样选择集合也有两种方式。假设我们要选择名为 test_collection 的集合代码如下

使用属性访问方式选择集合

collection1 db1.test_collection# 使用字典访问方式选择集合 collection2 db1[test_collection]如果集合不存在MongoDB 会在插入数据时自动创建。例如我们可以通过以下代码向集合中插入一条数据从而创建集合 data {name: 张三, age: 20} collection2.insert_one(data)上述代码向 test_collection 集合中插入了一条数据如果 test_collection 集合不存在MongoDB 会自动创建它 。 四、文档型数据的存储与查询艺术 在掌握了 Python 与 MongoDB 的连接以及 pymongo 库的基本使用方法后我们就可以深入探讨如何在 MongoDB 中进行文档型数据的存储与查询操作了。这部分内容是使用 MongoDB 进行数据管理的核心包括插入文档、查询文档、更新文档和删除文档等操作下面将详细介绍这些操作的具体实现方式。 4.1 插入文档 在 MongoDB 中插入文档是将数据存储到集合中的基本操作。pymongo 库提供了insert_one()和insert_many()方法分别用于插入单条数据和多条数据。 4.1.1 插入单条数据 使用insert_one()方法可以向集合中插入一条文档数据。该方法接受一个字典作为参数字典中的键值对即为文档的字段和对应的值。例如我们向名为students的集合中插入一条学生信息的代码如下 from pymongo import MongoClient# 连接MongoDB服务器 client MongoClient(mongodb://localhost:27017/)

选择数据库

db client[school]

选择集合

collection db[students]# 要插入的学生信息 student {name: 张三,age: 20,gender: 男,major: 计算机科学 }# 插入单条数据 result collection.insert_one(student) print(f插入的文档ID: {result.inserted_id})在上述代码中首先创建了一个student字典包含学生的各项信息。然后使用insert_one()方法将该字典插入到students集合中insert_one()方法返回一个InsertOneResult对象通过该对象的inserted_id属性可以获取插入文档的唯一标识符。 4.1.2 插入多条数据 当需要插入多条数据时可以使用insert_many()方法。该方法接受一个包含多个字典的列表作为参数每个字典代表一条文档数据。例如我们向students集合中插入多条学生信息的代码如下 from pymongo import MongoClient# 连接MongoDB服务器 client MongoClient(mongodb://localhost:27017/)

选择数据库

db client[school]

选择集合

collection db[students]# 要插入的多条学生信息 students [{name: 李四,age: 21,gender: 女,major: 数学},{name: 王五,age: 19,gender: 男,major: 英语},{name: 赵六,age: 22,gender: 女,major: 物理学} ]# 插入多条数据 result collection.insert_many(students) print(f插入的文档ID列表: {result.inserted_ids})在这段代码中定义了一个包含三个学生信息字典的列表students然后使用insert_many()方法将这些数据插入到students集合中。insert_many()方法返回一个InsertManyResult对象通过其inserted_ids属性可以获取插入的多个文档的唯一标识符列表。 4.2 查询文档 查询文档是从 MongoDB 集合中获取数据的重要操作。pymongo 库提供了丰富的查询方法如find()和find_one()可以满足各种查询需求包括查询所有文档、查询单个文档、带条件查询和模糊查询等。 4.2.1 查询所有文档 使用find()方法并传入一个空的查询条件即{}可以查询集合中的所有文档。find()方法返回一个游标对象通过遍历该游标可以获取每个文档。例如查询students集合中所有学生信息的代码如下 from pymongo import MongoClient# 连接MongoDB服务器 client MongoClient(mongodb://localhost:27017/)

选择数据库

db client[school]

选择集合

collection db[students]# 查询所有文档 results collection.find({}) for result in results:print(result)上述代码中collection.find({})返回一个包含所有学生文档的游标通过for循环遍历该游标将每个学生文档打印出来。 4.2.2 查询单个文档 find_one()方法用于查询集合中的单个文档它返回满足查询条件的第一个文档。如果不传入查询条件则返回集合中的第一个文档。例如查询students集合中名为 “张三” 的学生信息的代码如下 from pymongo import MongoClient# 连接MongoDB服务器 client MongoClient(mongodb://localhost:27017/)

选择数据库

db client[school]

选择集合

collection db[students]# 查询单个文档 result collection.find_one({name: 张三}) print(result)在这段代码中collection.find_one({‘name’: ‘张三’})根据name字段为 “张三” 的条件查询文档并返回第一个匹配的文档。 4.2.3 带条件查询 在实际应用中常常需要根据特定条件查询文档。可以在find()方法中传入一个查询条件字典来实现带条件查询。例如查询students集合中年龄大于 20 岁的学生信息的代码如下 from pymongo import MongoClient# 连接MongoDB服务器 client MongoClient(mongodb://localhost:27017/)

选择数据库

db client[school]

选择集合

collection db[students]# 带条件查询 query {age: {\(gt: 20}} results collection.find(query) for result in results:print(result)上述代码中定义了一个查询条件query其中’\)gt’是 MongoDB 的查询操作符表示大于。collection.find(query)根据该条件查询文档并返回所有年龄大于 20 岁的学生文档。 常用的查询操作符还有很多比如 \(eq等于例如{‘age’: {‘\)eq’: 20}}表示查询年龄等于 20 岁的文档。\(ne不等于例如{‘age’: {‘\)ne’: 20}}表示查询年龄不等于 20 岁的文档。\(lt小于例如{‘age’: {‘\)lt’: 20}}表示查询年龄小于 20 岁的文档。\(lte小于等于例如{‘age’: {‘\)lte’: 20}}表示查询年龄小于等于 20 岁的文档。\(in在指定数组内例如{‘age’: {‘\)in’: [20, 22]}}表示查询年龄为 20 岁或 22 岁的文档。\(nin不在指定数组内例如{‘age’: {‘\)nin’: [20, 22]}}表示查询年龄不是 20 岁和 22 岁的文档。 4.2.4 模糊查询 在查询字符串类型的字段时经常需要进行模糊查询。MongoDB 支持使用正则表达式或$regex操作符来实现模糊查询。例如查询students集合中姓名以 “张” 开头的学生信息的代码如下 from pymongo import MongoClient import re# 连接MongoDB服务器 client MongoClient(mongodb://localhost:27017/)

选择数据库

db client[school]

选择集合

collection db[students]# 模糊查询 query {name: re.compile(^张)} results collection.find(query) for result in results:print(result)在上述代码中使用re.compile(‘^张’)创建了一个正则表达式对象表示匹配以 “张” 开头的字符串。collection.find(query)根据该正则表达式条件查询文档并返回所有姓名以 “张” 开头的学生文档。 也可以使用$regex操作符来实现相同的功能代码如下 from pymongo import MongoClient# 连接MongoDB服务器 client MongoClient(mongodb://localhost:27017/)

选择数据库

db client[school]

选择集合

collection db[students]# 模糊查询 query {name: {$regex: ^张}} results collection.find(query) for result in results:print(result)这两种方式都能实现模糊查询你可以根据自己的习惯选择使用。 4.3 更新文档 在 MongoDB 中更新文档是对已存储的数据进行修改的操作。pymongo 库提供了update_one()和update_many()方法分别用于更新单个文档和多个文档。 4.3.1 更新单个文档 update_one()方法用于更新满足查询条件的第一个文档。它接受两个参数第一个参数是查询条件第二个参数是更新操作符和要更新的值组成的字典。例如将students集合中名为 “张三” 的学生年龄更新为 21 岁的代码如下 from pymongo import MongoClient# 连接MongoDB服务器 client MongoClient(mongodb://localhost:27017/)

选择数据库

db client[school]

选择集合

collection db[students]# 更新单个文档 filter {name: 张三} update {\(set: {age: 21}} result collection.update_one(filter, update) print(f匹配的文档数: {result.matched_count}) print(f修改的文档数: {result.modified_count})在上述代码中filter是查询条件用于确定要更新的文档。update是更新操作使用’\)set’操作符表示设置字段的值将age字段更新为 21。update_one()方法返回一个UpdateResult对象通过其matched_count属性可以获取匹配的文档数modified_count属性可以获取实际修改的文档数。 4.3.2 更新多个文档 update_many()方法用于更新满足查询条件的所有文档其使用方法与update_one()类似。例如将students集合中所有年龄大于 20 岁的学生专业更新为 “信息与计算科学” 的代码如下 from pymongo import MongoClient# 连接MongoDB服务器 client MongoClient(mongodb://localhost:27017/)

选择数据库

db client[school]

选择集合

collection db[students]# 更新多个文档 filter {age: {\(gt: 20}} update {\)set: {major: 信息与计算科学}} result collection.update_many(filter, update) print(f匹配的文档数: {result.matched_count}) print(f修改的文档数: {result.modified_count})在这段代码中filter指定了查询条件即年龄大于 20 岁的学生。update指定了更新操作将这些学生的major字段更新为 “信息与计算科学”。update_many()方法返回的UpdateResult对象同样包含matched_count和modified_count属性用于获取匹配和修改的文档数量。 4.4 删除文档 删除文档是从 MongoDB 集合中移除数据的操作。pymongo 库提供了delete_one()和delete_many()方法分别用于删除单个文档和多个文档。 4.4.1 删除单个文档 delete_one()方法用于删除满足查询条件的第一个文档。例如删除students集合中名为 “张三” 的学生信息的代码如下 from pymongo import MongoClient# 连接MongoDB服务器 client MongoClient(mongodb://localhost:27017/)

选择数据库

db client[school]

选择集合

collection db[students]# 删除单个文档 filter {name: 张三} result collection.delete_one(filter) print(f删除的文档数: {result.deleted_count})在上述代码中filter是查询条件用于确定要删除的文档。delete_one()方法返回一个DeleteResult对象通过其deleted_count属性可以获取删除的文档数。 4.4.2 删除多个文档 delete_many()方法用于删除满足查询条件的所有文档。例如删除students集合中所有年龄小于 18 岁的学生信息的代码如下 from pymongo import MongoClient# 连接MongoDB服务器 client MongoClient(mongodb://localhost:27017/)

选择数据库

db client[school]

选择集合

collection db[students]# 删除多个文档 filter {age: {$lt: 18}} result collection.delete_many(filter) print(f删除的文档数: {result.deleted_count})在这段代码中filter指定了查询条件即年龄小于 18 岁的学生。delete_many()方法返回的DeleteResult对象的deleted_count属性表示删除的文档数量。通过这种方式可以一次性删除多个符合条件的文档。 五、总结与展望 通过本文的学习我们深入了解了 MongoDB 在 Python 爬虫数据存储中的应用。MongoDB 以其灵活的文档模型、出色的扩展性和丰富的查询功能成为爬虫数据存储的理想选择。我们从 MongoDB 的安装与启动开始逐步掌握了使用 Python 的 pymongo 库进行数据库连接、文档操作等核心技能。无论是插入、查询、更新还是删除文档MongoDB 都提供了简洁高效的操作方法使得我们能够轻松地管理和处理爬虫获取到的数据。 展望未来随着大数据和人工智能技术的飞速发展数据的规模和复杂性将持续增长。MongoDB 有望在这一趋势下继续发挥其优势并在数据处理领域展现出更多的可能性。在云计算和云原生领域MongoDB 将进一步强化其云原生特性与各种云服务深度融合提供更高效、更便捷的托管服务。这将使得开发者能够更加轻松地在云端部署和管理 MongoDB 数据库降低运维成本提高开发效率。 在人工智能与大数据分析方面MongoDB 可能会与机器学习、深度学习算法更紧密地结合。通过提供内置的数据分析和处理功能MongoDB 将帮助用户更快速地从海量数据中提取有价值的信息为智能决策提供支持。例如在实时数据分析场景中MongoDB 的高性能读写能力和丰富的查询操作符将能够满足对实时数据处理和分析的需求助力企业实现业务的实时监控和快速响应。 在数据安全和隐私保护日益重要的今天MongoDB 也将不断加强其安全功能。通过更严格的数据加密、精细化的权限管理和强大的身份验证机制MongoDB 将确保数据在存储和传输过程中的安全性防止数据泄露和未经授权的访问。 MongoDB 在 Python 爬虫数据存储及未来数据处理领域前景广阔。希望读者能够通过本文的学习掌握 MongoDB 的基本操作和应用为后续在实际项目中的应用打下坚实的基础。在不断变化的技术领域中持续关注 MongoDB 的发展动态探索其更多的应用场景和创新用法将有助于我们更好地应对大数据时代的数据管理挑战。