沈阳高端网站制作公司,开发一款app需要多少钱?,天津网站建设方案服务,有没有比WORDPRESS好的软件文章目录 一、引言1.1 模块与包对于Python开发的重要性1.2 Python作为拥有丰富生态系统的编程语言 二、为什么学习模块与包2.1 复用代码#xff1a;利用现有模块与包加速开发过程2.2 扩展功能#xff1a;通过模块与包提供的功能增强应用的能力 三、模块的使用3.1 导入模块利用现有模块与包加速开发过程2.2 扩展功能通过模块与包提供的功能增强应用的能力 三、模块的使用3.1 导入模块import语句的使用和不同的导入方式3.2 常用模块常见的内置模块和第三方模块的介绍和应用场景3.3 自定义模块如何创建自己的模块并使用 四、包的使用4.1 包的概念和组织结构模块的集合形成的目录结构4.2 导入包和模块import语句的使用和包的层级结构4.3 包的初始化__init__.py文件的作用和初始化过程 五、常用模块和包的介绍5.1 文字处理re、string等模块的介绍和使用5.2 数据处理numpy、pandas等模块的介绍和使用5.3 网络通信socket、requests等模块的介绍和使用5.4 图形图像matplotlib、PIL等模块的介绍和使用 六、模块和包的扩展6.1 添加搜索路径sys模块的使用和自定义模块的搜索路径6.2 创建可执行脚本__main__.py文件的作用和命令行参数的处理6.3 发布和安装模块与包打包、发布和安装自己的模块与包 七、实践项目编写一个自定义的爬虫模块  重温Python适合新手搭建知识体系也适合大佬的温故知新~ 一、引言 
1.1 模块与包对于Python开发的重要性 
模块和包是Python语言中非常重要的概念它们可以让开发者组织代码并且使代码更加可维护和可重用。 
模块 
模块是指一个Python文件它包含了一些函数、类或变量等。在Python中可以使用import关键字来导入一个模块然后就可以使用该模块中的内容。这种方式可以避免命名冲突并且提高了代码的可维护性和可读性。 
包 
包是指一组相关的模块的集合它们通常被组织在一个文件夹中并且包含一个特殊的__init__.py文件。包可以帮助开发者将代码按照功能或者业务逻辑进行划分并且可以方便地进行版本管理和发布。 
实际使用场景 
使用第三方包来加速开发过程、提高代码质量和可维护性将自己的代码打包成包进行发布和分享使用模块和包的方式来组织测试代码、文档和示例代码等。 
1.2 Python作为拥有丰富生态系统的编程语言 
Python作为拥有丰富生态系统的编程语言可以满足各种开发需求并且具备良好的可扩展性和可维护性在开发领域有着广泛的应用和强大的支持。 
Python拥有众多优秀的第三方库和框架。例如NumPy、Pandas、Scikit-learn等它们提供了丰富的功能和算法使得数据科学、机器学习、人工智能等领域的开发变得更加便捷和高效。Python在Web开发方面也有很强的生态系统。框架如Django和Flask提供了强大的Web开发功能使得构建Web应用变得简单而快速。此外还有许多其他的库和工具可以帮助开发者实现前端开发、API开发、数据库管理等各个方面的需求。Python还被广泛用于科学计算、数据分析、自然语言处理等领域。在这些领域中Python拥有诸如SciPy、NLTK、Spacy等专门的库和工具可以方便地进行科学计算、文本处理等操作。Python社区非常活跃拥有庞大的开发者群体和丰富的资源。开发者可以通过各种渠道获取帮助、分享经验和学习资源这使得Python成为一门容易上手和学习的语言。 
二、为什么学习模块与包 
2.1 复用代码利用现有模块与包加速开发过程 
在Python中复用代码可以通过使用现有的模块和包来加速开发过程。通过利用现有模块和包来复用代码可以节省开发时间和精力同时保证代码质量和可维护性。 
导入标准库Python内置了许多功能强大的标准库例如os、datetime等它们提供了各种常用的功能和工具函数可以直接导入并在项目中使用。 
import os
current_directory  os.getcwd()使用第三方库Python拥有众多优秀的第三方库可以提供丰富的功能和工具。使用这些库可以避免从零开始编写代码只需将其安装并导入即可。 进行数据分析可以使用Pandas库  
import pandas as pd
data  pd.read_csv(data.csv)构建自己的模块和包根据项目的需求可以将常用的功能封装为模块或包以便在不同的项目中重复使用。可以将相关的函数、类和变量放在一个Python文件中然后使用import语句导入。如果功能更为复杂可以将多个模块组织成一个包并在__init__.py文件中定义包的接口。  使用虚拟环境在开发过程中可以使用虚拟环境将项目的依赖与系统的Python环境隔离开以防止不同项目之间的冲突。虚拟环境可以使用venv或者第三方工具如conda来创建和管理。  贡献代码给开源社区如果你在开发过程中编写了一些通用的代码可以考虑将其贡献给开源社区成为一个开源项目。这样既可以帮助他人也可以使自己的代码更加广泛地被使用和改进。  
2.2 扩展功能通过模块与包提供的功能增强应用的能力 
在Python中扩展应用的功能可以通过使用模块和包提供的工具和功能来实现。通过使用模块和包提供的工具和功能可以为Python应用增加更多的功能和能力让应用变得更加强大和灵活。 导入第三方库Python拥有众多优秀的第三方库可以提供各种功能和工具例如数据分析、机器学习、图像处理等。通过导入这些库可以为应用增加更多的功能。 进行图像处理可以使用OpenCV库  
import cv2
img  cv2.imread(image.jpg)自定义模块或包根据应用的需求可以编写自己的模块或包以提供特定的功能或工具。可以将相关的函数、类和变量放在一个Python文件中然后使用import语句导入。如果功能更为复杂可以将多个模块组织成一个包并在__init__.py文件中定义包的接口。  使用装饰器Python中的装饰器可以在不改变原有代码的情况下为函数或类增加额外的功能。装饰器可以用于日志记录、性能统计、缓存等方面。 使用装饰器为函数添加日志记录功能  
def log(func):def wrapper(*args, **kwargs):print(调用函数{}.format(func.__name__))return func(*args, **kwargs)return wrapperlog
def foo():print(Hello, World!)foo()使用扩展包有些第三方包可以为Python提供功能扩展例如NumPy和Pandas可以为Python提供更强大的数学计算和数据分析能力。通过安装和导入这些扩展包可以为应用增加更多的功能。  使用插件有些模块和包支持插件机制可以通过编写插件来扩展它们的功能。例如Sublime Text编辑器支持插件机制可以编写插件来增加新的功能或者修改原有功能。  
三、模块的使用 
3.1 导入模块import语句的使用和不同的导入方式 
在Python中导入模块是一种常见的方式通过使用import语句可以将模块中的功能引入到当前的代码中。根据实际需求选择适合的导入方式可以使代码更加清晰、可读性更高并且避免命名冲突。 
基本导入方式使用import语句可以导入整个模块并使用模块名作为前缀来访问其中的功能。 
import module_name
module_name.function_name()导入特定功能可以使用from关键字来从模块中导入特定的功能并直接使用功能名进行访问。这种方式可以避免每次使用时都需要写上模块名。 
from module_name import function_name
function_name()给导入的功能指定别名使用as关键字可以给导入的功能指定一个别名以方便使用。 
from module_name import function_name as fn
fn()导入整个模块并给模块指定别名可以使用as关键字给导入的整个模块指定一个别名。 
import module_name as mn
mn.function_name()导入模块中的所有功能使用from module_name import *语句可以导入模块中的所有功能。但是这种方式不太推荐使用因为容易造成命名冲突和代码可读性降低。 
from module_name import *
function_name()ps模块的导入顺序很重要。Python首次导入模块时会执行该模块中的代码并将结果保存到缓存中后续再次导入时会直接使用缓存中的结果而不会再次执行模块中的代码。 
3.2 常用模块常见的内置模块和第三方模块的介绍和应用场景 
Python中有很多常用的模块包括内置模块和第三方模块。根据实际需求选择适合的模块可以极大地提高编程效率并且使代码更加简洁、易读。 
内置模块 os模块提供了访问操作系统功能的接口可以用于文件和目录操作、进程管理等。 使用os.path.join()函数来连接路径名  
import os
path  os.path.join(dir1, dir2, file.txt)datetime模块提供了日期和时间处理的功能可以进行日期和时间的计算、格式化和解析。 使用datetime.now()获取当前时间  
from datetime import datetime
now  datetime.now()math模块提供了数学运算相关的函数包括三角函数、指数函数、对数函数等。 使用math.sin()函数计算正弦值  
import math
x  math.sin(0.5)random模块提供了随机数相关的功能包括生成随机数、洗牌、样本抽取等。 使用random.randint()函数生成一个随机整数  
import random
x  random.randint(1, 10)第三方模块 
numpy模块提供了高效的数值计算功能包括数组操作、线性代数、傅里叶变换等。例如可以使用numpy.array()创建一个数组 
import numpy as np
arr  np.array([1, 2, 3])pandas模块提供了数据分析和处理相关的功能包括读取和写入数据、数据清洗、切片和索引、数据聚合和透视等。 使用pandas.read_csv()函数读取CSV文件  
import pandas as pd
data  pd.read_csv(data.csv)matplotlib模块提供了绘图和数据可视化的功能可以生成各种类型的图表包括线图、散点图、柱状图等。 使用matplotlib.pyplot.plot()函数绘制一条曲线  
import matplotlib.pyplot as plt
x  [1, 2, 3]
y  [4, 5, 6]
plt.plot(x, y)
plt.show()requests模块提供了HTTP请求相关的功能可以用于发送HTTP请求并获取响应数据。 使用requests.get()函数发送一个GET请求  
import requests
response  requests.get(https://www.baidu.com)3.3 自定义模块如何创建自己的模块并使用 
在Python中可以通过创建自定义模块来封装一些功能并在其他程序中进行复用。自定义模块的好处是可以将一些常用的功能封装起来提高代码的重用性和可维护性。 创建模块文件在一个新的.py文件中编写自己的模块代码。 创建一个名为my_module.py的文件其中包含一个简单的函数greet()  
def greet(name):print(fHello, {name}!)使用自定义模块在需要使用自定义模块的程序中使用import语句将模块引入并使用模块名加上函数名来调用其中的功能。 在另一个.py文件中使用my_module模块的greet()函数  
import my_modulemy_module.greet(Alice)给模块指定别名可以使用as关键字给导入的模块指定一个别名以方便使用。 给my_module模块指定别名为mm  
import my_module as mmmm.greet(Bob)导入特定功能使用from关键字可以从模块中导入特定的功能并直接使用功能名进行访问。 只导入my_module模块中的greet()函数  
from my_module import greetgreet(Charlie)ps自定义模块的文件名和模块名应该保持一致以方便导入和使用。 
四、包的使用 
4.1 包的概念和组织结构模块的集合形成的目录结构 
在Python中包是一种组织和管理模块的方式它将相关的模块组织在一个目录下并通过__init__.py文件来表示这个目录是一个包。包可以有多层次的结构形成一个包含多个子包和模块的目录树。 
包的组织结构示例 
my_package/            # 包的根目录__init__.py        # 包的初始化文件module1.py         # 模块1module2.py         # 模块2subpackage/        # 子包__init__.py    # 子包的初始化文件module3.py     # 子包的模块1module4.py     # 子包的模块2创建包的步骤 
创建一个目录作为包的根目录。在根目录下创建一个名为__init__.py的空文件用于表示这个目录是一个包。在根目录下编写模块文件以.py为扩展名。可以在根目录下创建子目录并在子目录中按照相同的方式创建子包或模块。 
要使用包中的模块可以使用import语句来导入。例如如果要导入包中的module1.py模块可以这样做 
import my_package.module1或者使用from语句导入特定的模块 
from my_package import module1在导入子包中的模块时可以使用点操作符进行访问。 
导入subpackage子包中的module3.py模块 
from my_package.subpackage import module3通过包的组织结构可以更好地管理和组织代码使代码结构清晰且易于维护。 
4.2 导入包和模块import语句的使用和包的层级结构 
在Python中可以使用import语句导入包和模块。通过导入包和模块可以在代码中访问其中定义的函数、类和变量并使用它们提供的功能。导入包和模块能够使代码更加模块化、可组织和易于维护。 导入整个包或模块 # 导入包
import package_name# 导入模块
import module_name导入特定的功能函数、类等 # 导入包特定的功能
from package_name import function_name# 导入模块特定的功能
from module_name import function_name给导入的包或模块指定别名 # 给导入的包指定别名
import package_name as alias_name# 给导入的模块指定别名
import module_name as alias_name给导入的功能指定别名 # 给导入包的功能指定别名
from package_name import function_name as alias_name# 给导入模块的功能指定别名
from module_name import function_name as alias_name4.3 包的初始化init.py文件的作用和初始化过程 
在Python中__init__.py文件是用于初始化包的特殊文件。它在包被导入或使用之前会被自动执行可以进行包的初始化操作、控制导入行为、提供包级别的功能并处理循环导入问题。 
作用和功能 
标识包 __init__.py文件的存在表明该目录是一个包。如果一个目录没有__init__.py文件Python将不会将其视为包。执行初始化代码 __init__.py文件可以包含任意Python代码这些代码将在包被导入或使用时执行。通常__init__.py文件用于执行一些初始化操作例如设置包的全局变量、导入子模块或包、注册资源等。控制包的导入行为 __init__.py文件可以通过定义__all__变量来控制包的导入行为。__all__是一个可选的列表包含了可以从包中直接导入的模块或变量的名称。如果__all__未定义那么使用import *语句导入包时默认只会导入__init__.py文件中定义的内容。提供包级别的功能 __init__.py文件可以在包级别提供一些功能例如定义包级别的函数、类、常量等。这些功能可以在包内的其他模块中共享和使用。处理循环导入问题 在包中存在多个模块相互导入的情况下__init__.py文件可以用于处理循环导入问题。通过在__init__.py文件中按需导入模块可以解决模块之间互相引用导致的循环导入错误。 
初始化包的过程 
当导入包时Python会自动执行包目录下的__init__.py文件。__init__.py文件中的代码将按顺序执行可以包含任意Python代码。执行完__init__.py文件中的代码后包的初始化完成可以开始使用包内的模块和功能。 
五、常用模块和包的介绍 
5.1 文字处理re、string等模块的介绍和使用 
在Python中有一些常用的模块可以用于处理文字其中包括re正则表达式和string模块。 re模块 re模块提供了对正则表达式的支持可以用于字符串的模式匹配、查找和替换等操作。它包含了一系列函数和方法例如match()、search()、findall()、sub()等。 import re# 使用match()函数匹配字符串开头
pattern  rhello
string  hello world
match  re.match(pattern, string)
if match:print(匹配成功)
else:print(匹配失败)# 使用search()函数查找字符串中的匹配项
pattern  rworld
string  hello world
match  re.search(pattern, string)
if match:print(找到匹配项)
else:print(未找到匹配项)# 使用findall()函数查找所有匹配项
pattern  r\d
string  I have 2 apples and 3 oranges
matches  re.findall(pattern, string)
print(matches)# 使用sub()函数替换匹配项
pattern  rapple
string  I have an apple
new_string  re.sub(pattern, orange, string)
print(new_string)string模块 string模块提供了处理字符串的常用函数和常量。它包含了一些字符串操作的工具函数例如strip()、split()、join()等。 import string# 使用strip()函数去除字符串两端的空白字符
s    hello world  
stripped_s  s.strip()
print(stripped_s)# 使用split()函数将字符串拆分成列表
s  apple,banana,orange
items  s.split(,)
print(items)# 使用join()函数将列表中的字符串连接成一个新的字符串
items  [apple, banana, orange]
new_string  ,.join(items)
print(new_string)# 使用常量ASCII_LETTERS获取所有ASCII字母
letters  string.ascii_letters
print(letters)5.2 数据处理numpy、pandas等模块的介绍和使用 
在Python中有一些常用的模块可以用于数据处理其中包括numpy和pandas等模块用来进行科学计算、数据处理和分析等操作。 numpy模块 numpy模块是Python中用于科学计算和数值分析的基础库。它提供了高性能的多维数组对象和一系列针对数组的数学函数和操作。numpy的核心是ndarray类它表示n维数组对象。 import numpy as np# 创建一个nparray数组
a  np.array([1, 2, 3])
print(a)# 创建一个二维的nparray数组
b  np.array([[1, 2, 3], [4, 5, 6]])
print(b)# 对数组进行运算
c  a  b
print(c)# 使用numpy中的数学函数
d  np.sin(c)
print(d)pandas模块 pandas模块是Python中用于数据处理和分析的库提供了高效、灵活且易于使用的数据结构和工具。其核心是DataFrame和Series对象分别用于表示二维表格和一维标签数组。 import pandas as pd# 创建一个DataFrame对象
data  {name: [Alice, Bob, Charlie], age: [25, 30, 35]}
df  pd.DataFrame(data)
print(df)# 从文件中读取数据创建DataFrame对象
df  pd.read_csv(data.csv)
print(df)# 对DataFrame进行操作
df[salary]  [5000, 6000, 7000]
df[income]  df[age] * df[salary]
print(df)# 使用pandas中的函数进行分析和处理
mean_age  df[age].mean()
max_income  df[income].max()
print(mean_age, max_income)5.3 网络通信socket、requests等模块的介绍和使用 
在Python中有一些常用的模块可以用于网络通信其中包括socket和requests等模块在Python中实现网络通信和发送HTTP请求等操作。 socket模块 socket模块是Python中用于网络编程的基础模块。它提供了标准的套接字接口支持TCP、UDP等协议。使用socket模块可以实现网络通信中的服务器和客户端程序。 import socket# 创建一个TCP服务器
server_socket  socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.bind((localhost, 8000))
server_socket.listen(5)
while True:client_socket, client_address  server_socket.accept()data  client_socket.recv(1024)print(Received:, data)client_socket.sendall(data)client_socket.close()# 创建一个TCP客户端
client_socket  socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect((localhost, 8000))
client_socket.sendall(bHello World)
data  client_socket.recv(1024)
print(Received:, data)
client_socket.close()requests模块 requests模块是Python中用于发送HTTP请求的库。它提供了简洁的API使得发送HTTP请求变得容易。使用requests模块可以获取网页内容、发送POST请求等。 import requests# 发送一个GET请求
response  requests.get(http://www.baidu.com)
print(response.content)# 发送一个POST请求
data  {name: Alice, age: 25}
response  requests.post(http://www.example.com/api, datadata)
print(response.json())5.4 图形图像matplotlib、PIL等模块的介绍和使用 
在Python中有一些常用的模块可以用于图形和图像处理其中包括matplotlib和PILPython Imaging Library等模块在Python中进行图形绘制和图像处理等操作。 matplotlib模块 matplotlib模块是Python中用于绘制图形和数据可视化的库。它提供了丰富的绘图功能包括折线图、散点图、柱状图等。使用matplotlib模块可以轻松地创建各种类型的图形。 import matplotlib.pyplot as plt# 绘制折线图
x  [1, 2, 3, 4, 5]
y  [2, 4, 6, 8, 10]
plt.plot(x, y)
plt.xlabel(X)
plt.ylabel(Y)
plt.title(Line Plot)
plt.show()# 绘制散点图
x  [1, 2, 3, 4, 5]
y  [2, 4, 6, 8, 10]
plt.scatter(x, y)
plt.xlabel(X)
plt.ylabel(Y)
plt.title(Scatter Plot)
plt.show()# 绘制柱状图
x  [A, B, C, D, E]
y  [10, 20, 30, 40, 50]
plt.bar(x, y)
plt.xlabel(Category)
plt.ylabel(Value)
plt.title(Bar Plot)
plt.show()PILPython Imaging Library模块 PIL模块是Python中用于图像处理的库。它提供了丰富的图像操作和处理功能包括图像的打开、保存、缩放、旋转、裁剪等。使用PIL模块可以对图像进行各种处理和操作。 from PIL import Image# 打开图像
image  Image.open(image.jpg)# 显示图像
image.show()# 缩放图像
resized_image  image.resize((200, 200))
resized_image.show()# 旋转图像
rotated_image  image.rotate(45)
rotated_image.show()# 裁剪图像
cropped_image  image.crop((100, 100, 300, 300))
cropped_image.show()# 保存图像
resized_image.save(resized_image.jpg)六、模块和包的扩展 
6.1 添加搜索路径sys模块的使用和自定义模块的搜索路径 
在Python中可以使用sys模块来添加搜索路径。sys模块是Python的内置模块之一提供了与Python解释器和运行环境相关的功能。 
要添加搜索路径可以使用sys.path属性。sys.path是一个包含字符串路径的列表表示Python解释器在导入模块时搜索的路径顺序。默认情况下sys.path已经包含了一些默认路径如当前工作目录和Python标准库的路径。 
添加搜索路径 
import sys# 添加单个路径到搜索路径
sys.path.append(/path/to/module)# 添加多个路径到搜索路径
new_paths  [/path/to/module1, /path/to/module2]
sys.path.extend(new_paths)临时添加路径 
import sys# 添加的路径会在其他路径之前被搜索
# 在开头添加单个路径到搜索路径
sys.path.insert(0, /path/to/module)# 在开头添加多个路径到搜索路径
new_paths  [/path/to/module1, /path/to/module2]
sys.path[0:0]  new_paths路径有几种常见方式 
将模块放在已有的搜索路径下将自定义模块放在Python已有的搜索路径中如当前工作目录或Python标准库目录。添加模块所在目录到sys.path可以使用上述的sys.path.append()或sys.path.extend()函数将模块所在目录添加到搜索路径中。使用PYTHONPATH环境变量可以设置PYTHONPATH环境变量将模块所在目录添加到其中。Python解释器会在导入模块时自动搜索PYTHONPATH中指定的路径。 
ps对于大型项目或需要频繁使用的自定义模块建议将其安装为包并使用pip进行安装管理这样可以更方便地引用和维护模块。 
6.2 创建可执行脚本main.py文件的作用和命令行参数的处理 
在Python中可以创建可执行脚本使其可以直接在命令行中运行。这可以通过创建一个名为__main__.py的文件来实现。 
__main__.py文件是一个特殊的文件名用于指定一个Python模块作为可执行脚本。当使用python -m 命令行运行时Python解释器会将指定的模块作为主程序执行。 
__main__.py文件 
def main():# 主程序逻辑print(Hello, World!)# 在if __name__  __main__:条件下调用main()函数这样当__main__.py文件直接运行时主程序会被执行
if __name__  __main__:main()除了__main__.py文件的作用Python还提供了处理命令行参数的方法。可以使用sys.argv获取传递给脚本的命令行参数列表。 
如何处理命令行参数 
import sysdef main():# 获取命令行参数args  sys.argv[1:]  # 排除脚本名称,用于获取除脚本名称外的所有命令行参数# 处理命令行参数for arg in args:print(arg)if __name__  __main__:main()# 从命令行运行python __main__.py arg1 arg2
# 输出结果
arg1
arg2通过处理命令行参数可以根据不同的参数执行不同的逻辑实现更灵活的脚本功能。 
6.3 发布和安装模块与包打包、发布和安装自己的模块与包 
在Python中可以将自己编写的代码打包成模块或包进行发布和安装以供其他人使用。 
打包模块或包 
使用setuptools库来打包模块或包。setuptools是一个用于构建和分发Python软件包的工具集提供了一系列命令行工具和API可以方便地打包、安装和发布Python软件包。 
使用setuptools打包模块或包的基本步骤 
创建一个包含模块或包代码的目录并在其中添加setup.py文件。setup.py文件包含了打包、安装和发布模块或包的配置信息如名称、版本、描述、作者等。在setup.py文件中使用setuptools.setup()函数来定义模块或包的元数据和依赖关系。 
from setuptools import setup, find_packages# setup()函数定义了模块或包的名称、版本、描述、作者等信息以及依赖于numpy和pandas库
setup(namemypackage,version1.0.0,descriptionA sample package,authorJohn Doe,packagesfind_packages(),install_requires[numpy,pandas]
)使用python setup.py sdist命令生成源码包。源码包是一个包含模块或包源代码的压缩文件通常以.tar.gz或.zip为扩展名。在执行该命令后会在当前目录下生成一个dist目录其中包含了生成的源码包。如果希望生成二进制包如.whl文件可以使用python setup.py bdist_wheel命令。生成的二进制包通常比源码包更容易安装和使用。 
发布模块或包: 
在打包完成后可以将模块或包发布到Python Package IndexPyPI上。PyPI是Python社区共享软件包的中心仓库可以方便地搜索、下载和安装各种Python软件包。 
发布模块或包的基本步骤 
在PyPI上注册账号并验证邮箱地址。使用twine库上传源码包或二进制包到PyPI。可以使用以下命令安装twine库 
pip install twine使用以下命令上传包 
# 将当前目录下dist目录中的所有包上传到PyPI上
twine upload dist/*安装模块或包: 
在发布模块或包后其他用户就可以使用pip命令从PyPI上安装模块或包 
# 自动下载并安装名为mypackage的模块或包
pip install mypackage如果需要安装特定版本的模块或包可以使用以下命令 
# 安装版本号为1.0.0的mypackage模块或包
pip install mypackage1.0.0七、实践项目编写一个自定义的爬虫模块 
import requests
from bs4 import BeautifulSoup# 管理爬虫功能
class Spider:# 传入一个 URL 参数并调用get_html()方法来获取解析后的HTML对象def __init__(self, url):self.url  urlself.soup  self.get_html()def get_html(self):# 发送 GET 请求response  requests.get(self.url)# 检查响应是否成功if response.status_code ! 200:raise ValueError(Failed to retrieve page)# 解析 HTMLsoup  BeautifulSoup(response.text, html.parser)return soup# 提取链接def get_links(self):# 提取所有链接links  self.soup.find_all(a)# 提取链接地址urls  []for link in links:href  link.get(href)if href:urls.append(href)return urls# 查找包含特定文本的标签并返回结果列表def search_text(self, text):# 查找文本results  self.soup.find_all(texttext)return results 
创建一个爬虫对象并执行相应的方法 
spider  Spider(https://www.baidu.com)# 获取所有链接
links  spider.get_links()
print(links)# 查找包含 百度 文本的标签
results  spider.search_text(百度)
print(results) 
人生虽曲折记得活出精彩 文章转载自: http://www.morning.wbfg.cn.gov.cn.wbfg.cn http://www.morning.rbmm.cn.gov.cn.rbmm.cn http://www.morning.hhxpl.cn.gov.cn.hhxpl.cn http://www.morning.xqjrg.cn.gov.cn.xqjrg.cn http://www.morning.lmzpk.cn.gov.cn.lmzpk.cn http://www.morning.kkjlz.cn.gov.cn.kkjlz.cn http://www.morning.klwxh.cn.gov.cn.klwxh.cn http://www.morning.ksqyj.cn.gov.cn.ksqyj.cn http://www.morning.pdgqf.cn.gov.cn.pdgqf.cn http://www.morning.nhdmh.cn.gov.cn.nhdmh.cn http://www.morning.mhpkz.cn.gov.cn.mhpkz.cn http://www.morning.ftmp.cn.gov.cn.ftmp.cn http://www.morning.nfnxp.cn.gov.cn.nfnxp.cn http://www.morning.gnbtp.cn.gov.cn.gnbtp.cn http://www.morning.trqsm.cn.gov.cn.trqsm.cn http://www.morning.bfrsr.cn.gov.cn.bfrsr.cn http://www.morning.brscd.cn.gov.cn.brscd.cn http://www.morning.glxmf.cn.gov.cn.glxmf.cn http://www.morning.ttdbr.cn.gov.cn.ttdbr.cn http://www.morning.fnxzk.cn.gov.cn.fnxzk.cn http://www.morning.tsynj.cn.gov.cn.tsynj.cn http://www.morning.brzlp.cn.gov.cn.brzlp.cn http://www.morning.rbbgh.cn.gov.cn.rbbgh.cn http://www.morning.mqbzk.cn.gov.cn.mqbzk.cn http://www.morning.dlmqn.cn.gov.cn.dlmqn.cn http://www.morning.pmbcr.cn.gov.cn.pmbcr.cn http://www.morning.xnzmc.cn.gov.cn.xnzmc.cn http://www.morning.lwtfx.cn.gov.cn.lwtfx.cn http://www.morning.lnmby.cn.gov.cn.lnmby.cn http://www.morning.gqflj.cn.gov.cn.gqflj.cn http://www.morning.yqrgq.cn.gov.cn.yqrgq.cn http://www.morning.frpb.cn.gov.cn.frpb.cn http://www.morning.zqwp.cn.gov.cn.zqwp.cn http://www.morning.tfei69.cn.gov.cn.tfei69.cn http://www.morning.nqmdc.cn.gov.cn.nqmdc.cn http://www.morning.xqwq.cn.gov.cn.xqwq.cn http://www.morning.zqzzn.cn.gov.cn.zqzzn.cn http://www.morning.mjwnc.cn.gov.cn.mjwnc.cn http://www.morning.ttkns.cn.gov.cn.ttkns.cn http://www.morning.jmtrq.cn.gov.cn.jmtrq.cn http://www.morning.mmynk.cn.gov.cn.mmynk.cn http://www.morning.xinxianzhi005.com.gov.cn.xinxianzhi005.com http://www.morning.mbzlg.cn.gov.cn.mbzlg.cn http://www.morning.qkrz.cn.gov.cn.qkrz.cn http://www.morning.rlwcs.cn.gov.cn.rlwcs.cn http://www.morning.hxfrd.cn.gov.cn.hxfrd.cn http://www.morning.gcfg.cn.gov.cn.gcfg.cn http://www.morning.syhwc.cn.gov.cn.syhwc.cn http://www.morning.fcqlt.cn.gov.cn.fcqlt.cn http://www.morning.gsdbg.cn.gov.cn.gsdbg.cn http://www.morning.zycll.cn.gov.cn.zycll.cn http://www.morning.slysg.cn.gov.cn.slysg.cn http://www.morning.jwxmn.cn.gov.cn.jwxmn.cn http://www.morning.xuejitest.com.gov.cn.xuejitest.com http://www.morning.yjknk.cn.gov.cn.yjknk.cn http://www.morning.fjfjm.cn.gov.cn.fjfjm.cn http://www.morning.gqnll.cn.gov.cn.gqnll.cn http://www.morning.rjrz.cn.gov.cn.rjrz.cn http://www.morning.fdhwh.cn.gov.cn.fdhwh.cn http://www.morning.rqxmz.cn.gov.cn.rqxmz.cn http://www.morning.bmbnc.cn.gov.cn.bmbnc.cn http://www.morning.gkmwk.cn.gov.cn.gkmwk.cn http://www.morning.wspyb.cn.gov.cn.wspyb.cn http://www.morning.lcwhn.cn.gov.cn.lcwhn.cn http://www.morning.wkwds.cn.gov.cn.wkwds.cn http://www.morning.gmmyn.cn.gov.cn.gmmyn.cn http://www.morning.jfjqs.cn.gov.cn.jfjqs.cn http://www.morning.grbgn.cn.gov.cn.grbgn.cn http://www.morning.qnzk.cn.gov.cn.qnzk.cn http://www.morning.fksdd.cn.gov.cn.fksdd.cn http://www.morning.mcjxq.cn.gov.cn.mcjxq.cn http://www.morning.qqfcf.cn.gov.cn.qqfcf.cn http://www.morning.yrjkz.cn.gov.cn.yrjkz.cn http://www.morning.sjbpg.cn.gov.cn.sjbpg.cn http://www.morning.fkflc.cn.gov.cn.fkflc.cn http://www.morning.cybch.cn.gov.cn.cybch.cn http://www.morning.zryf.cn.gov.cn.zryf.cn http://www.morning.fndfn.cn.gov.cn.fndfn.cn http://www.morning.rxgnn.cn.gov.cn.rxgnn.cn http://www.morning.tqldj.cn.gov.cn.tqldj.cn