python开发二

python开发二

requests请求模块

requests 是一个常用的 Python 第三方库,用于发送 HTTP 请求。它提供了简洁且易于使用的接口,使得与 Web 服务进行交互变得非常方便。

发送 GET 请求并获取响应

import requests

response = requests.get("https://api.example.com/data")
print(response.status_code)  # 获取响应状态码
print(response.text)  # 获取响应内容

发送带参数的 GET 请求

import requests

response = requests.get("https://api.example.com/data")
print(response.status_code)  # 获取响应状态码
print(response.text)  # 获取响应内容

发送 POST 请求并传递数据

import requests

data = {"key": "value"}
response = requests.post("https://api.example.com/submit", data=data)
print(response.json())  # 解析响应内容为 JSON 格式

发送带有请求头的请求

import requests

headers = {"User-Agent": "Mozilla/5.0"}
response = requests.get("https://api.example.com/data", headers=headers)
print(response.text)

可以自定义请求头,例如设置 User-Agent、Referer 等,以模拟不同的浏览器或来源。

处理响应内容

import requests

response = requests.get("https://api.example.com/data")
print(response.status_code)  # 获取响应状态码
print(response.text)  # 获取响应内容
print(response.json())  # 解析响应内容为 JSON 格式

根据需要,可以获取响应的状态码、文本内容或将响应内容解析为 JSON 格式。

处理异常和错误

import requests

try:
    response = requests.get("https://api.example.com/data")
    response.raise_for_status()  # 如果请求失败,抛出异常
except requests.HTTPError as e:
    print("HTTP Error:", e)
except requests.RequestException as e:
    print("Error:", e)

使用 try-except 块来捕获可能发生的异常,如网络连接错误、超时等。

文件上传和下载

import requests

# 文件上传
files = {"file": open("file.txt", "rb")}
response = requests.post("https://api.example.com/upload", files=files)

# 文件下载
response = requests.get("https://example.com/image.jpg")
with open("image.jpg", "wb") as file:
    file.write(response.content)

可以使用 files 参数将文件上传到服务器,并使用 response.content 获取返回的二进制数据,然后将其保存到本地文件中。

base64模块

    1. 编码:

b64encode(s): 对给定的字节串(bytes)进行 Base64 编码,返回编码后的字节串。
b64encode(s, altchars): 使用指定的替代字符进行 Base64 编码。

    1. 解码:

b64decode(s): 对给定的 Base64 编码的字节串进行解码,返回解码后的字节串。
b64decode(s, altchars): 使用指定的替代字符进行 Base64 解码。
示例:

import base64

# 编码
text = "Hello, World!".encode("utf-8")
encoded_text = base64.b64encode(text)
print(encoded_text)  # 输出:b'SGVsbG8sIFdvcmxkIQ=='

# 解码
decoded_text = base64.b64decode(encoded_text)
print(decoded_text.decode("utf-8"))  # 输出:Hello, World!

编码和解码 URL 安全的 Base64:

URL 安全的 Base64 在编码结果中使用 - 和 _ 替代 + 和 /。可以使用 urlsafe_b64encode() 和 urlsafe_b64decode() 函数进行 URL 安全的编码和解码。

import base64

text = "Hello, World!".encode("utf-8")

# URL 安全的 Base64 编码
encoded_text = base64.urlsafe_b64encode(text)
print(encoded_text)  # 输出:b'SGVsbG8sIFdvcmxkIQ=='

# URL 安全的 Base64 解码
decoded_text = base64.urlsafe_b64decode(encoded_text)
print(decoded_text.decode("utf-8"))  # 输出:Hello, World!

多行输出和填充字符控制

可以使用 b64encode() 函数的 break_lines 参数来控制是否启用多行输出,并使用 b64encode() 和 b64decode() 函数的 pad 参数来控制是否启用填充字符。

import base64

text = "Hello, World!".encode("utf-8")

# 启用多行输出和填充字符
encoded_text = base64.b64encode(text, break_lines=True).decode("utf-8")
print(encoded_text)

decoded_text = base64.b64decode(encoded_text, pad=True).decode("utf-8")
print(decoded_text)

对文件进行编码和解码

import base64

# 编码文件
with open("example.jpg", "rb") as file:
    encoded_image = base64.b64encode(file.read())
    print(encoded_image)

# 解码文件
with open("decoded_image.jpg", "wb") as file:
    file.write(base64.b64decode(encoded_image))

etree模块

    1. 解析 XML 数据:

parse(file): 解析给定文件名或文件对象中的 XML 数据,并返回根元素对象。
fromstring(xmlstring): 解析给定的 XML 字符串,并返回根元素对象。

    1. 遍历 XML 树

iter(): 遍历 XML 树的所有元素。
find(tag): 在当前元素的子元素中查找并返回第一个具有给定标签名的子元素。
findall(tag): 在当前元素的子元素中查找并返回所有具有给定标签名的子元素。

    1. 获取和修改元素内容:

text: 获取或设置元素的文本内容。
attrib: 获取或设置元素的属性字典。
示例:

import xml.etree.ElementTree as etree

# 解析 XML 数据
tree = etree.parse("data.xml")
root = tree.getroot()

# 遍历 XML 树
for child in root:
    print(child.tag, child.attrib)

# 获取和修改元素内容
element = root.find("element")
print(element.text)  # 输出元素的文本内容

element.text = "New Text"  # 修改元素的文本内容
element.set("attribute", "value")  # 设置元素的属性

# 生成 XML 字符串
xml_string = etree.tostring(root, encoding="utf-8")
print(xml_string)

创建新的 XML 元素

  • Element(tag, attrib={}): 创建具有给定标签名和属性的新元素。
  • SubElement(parent, tag, attrib={}): 在父元素下创建具有给定标签名和属性的新子元素。
import xml.etree.ElementTree as etree

# 创建根元素
root = etree.Element("root")

# 创建子元素
child = etree.SubElement(root, "child")
child.text = "Hello"

# 添加属性
child.set("attribute", "value")

# 输出 XML 字符串
xml_string = etree.tostring(root, encoding="utf-8")
print(xml_string)

删除元素

  • remove(element): 从父元素中删除指定的子元素
import xml.etree.ElementTree as etree

tree = etree.parse("data.xml")
root = tree.getroot()

# 删除指定的子元素
element_to_remove = root.find("element")
root.remove(element_to_remove)

# 输出修改后的 XML 字符串
xml_string = etree.tostring(root, encoding="utf-8")
print(xml_string)

寻找命名空间

  • register_namespace(prefix, uri): 注册一个命名空间前缀和 URI 的映射关系。
  • QName(uri, localname): 创建具有给定命名空间 URI 和本地名称的 QName 对象。
import xml.etree.ElementTree as etree

# 注册命名空间前缀和 URI 映射关系
etree.register_namespace("prefix", "http://example.com/ns")

# 创建带有命名空间的元素
element = etree.Element("{http://example.com/ns}tag")

# 使用 QName 创建带有命名空间的属性
qname = etree.QName("http://example.com/ns", "attribute")
element.set(qname, "value")

解析和生成字符串

  • tostring(element, encoding=‘unicode’): 将给定的元素转换为字符串。
  • fromstringlist(sequence): 从字符串列表解析多个 XML 文档。
import xml.etree.ElementTree as etree

# 解析多个 XML 文档
xml_list = ['<root><child>1</child></root>', '<root><child>2</child></root>']
for xml_string in xml_list:
    root = etree.fromstring(xml_string)
    # 处理每个 XML 文档

# 生成 XML 字符串
root = etree.Element("root")
xml_string = etree.tostring(root, encoding="utf-8")
print(xml_string)

xpath解析方式

XPath 是一种用于在 XML 文档中定位元素的语言。etree 模块提供了支持 XPath 的功能,使得可以使用 XPath 表达式来解析和选取 XML 数据。

以下是使用 XPath 解析 XML 数据的示例:

import xml.etree.ElementTree as etree

# 解析 XML 数据
tree = etree.parse("data.xml")
root = tree.getroot()

# 使用 XPath 选取元素
elements = root.findall(".//element")  # 选取所有名为 "element" 的元素
for element in elements:
    print(element.text)
    
element = root.find(".//element[@attribute='value']")  # 选取具有属性值为 "value" 的 "element" 元素
if element is not None:
    print(element.text)

利用xpath获取网址的域名,标题和IP地址

import requests
from lxml import etree

# 发送请求并获取网页内容
url = "https://example.com"  # 替换为您要获取信息的网址
response = requests.get(url)
html = response.text

# 使用 lxml 解析 HTML
tree = etree.HTML(html)

# 使用 XPath 提取域名
domain = tree.xpath("//a/@href")
if domain:
    domain = domain[0].strip("/")

# 使用 XPath 提取标题
title = tree.xpath("//title/text()")[0]

# 使用 XPath 提取 IP 地址
ip_address = tree.xpath("//span[@class='ip-address']/text()")[0]

# 打印结果
print("Domain:", domain)
print("Title:", title)
print("IP Address:", ip_address)

具体情况需要根据实际情况修改 XPath 表达式,以适应目标网页的结构和元素选择方式。

ftplib库

ftplib 模块提供了一系列方法和功能,用于通过 FTP 协议进行文件传输和管理。以下是 ftplib 的主要功能:

连接和认证:

  • FTP(host[, user[, passwd]]): 创建一个 FTP 对象并连接到指定的 FTP 服务器。
  • login(user=‘’, passwd=‘’, acct=‘’): 使用给定的用户名、密码和账户信息进行认证。

文件上传和下载:

  • storbinary(cmd, file[, blocksize[, callback[, rest]]]): 将本地文件的数据流上传到远程服务器。
  • retrbinary(cmd, callback[, maxblocksize[, rest]]): 从远程服务器下载文件的数据流到本地。
  • storlines(cmd, file[, callback]): 将本地文件逐行上传到远程服务器。
  • retrlines(cmd, callback): 从远程服务器逐行下载文件到本地。

目录和文件管理:

  • cwd(path): 更改当前工作目录到指定的路径。
  • pwd(): 获取当前工作目录的路径。
  • nlst([path]): 列出指定路径下的文件和目录名称(不包含详细信息)。
  • dir([path[,…]]): 列出指定路径下的文件和目录详细信息。
  • delete(pathname): 删除远程服务器上的指定文件。
  • rename(fromname, toname): 重命名远程服务器上的文件或目录。
  • mkd(pathname): 在远程服务器上创建新目录。
  • rmd(dirname): 删除远程服务器上的指定目录。

其他功能:

  • quit(): 关闭 FTP 连接。
  • getwelcome(): 获取服务器的欢迎消息。
  • sendcmd(cmd): 发送原始 FTP 命令到服务器。
  • voidcmd(cmd): 执行无返回值的 FTP 命令。
  • voidresp(): 等待服务器的响应,如果响应不是成功的响应码,则引发异常。

示例:

from ftplib import FTP

# 连接和认证
ftp = FTP("example.com")
ftp.login(user="username", passwd="password")

# 文件上传和下载
with open("local_file.txt", "rb") as file:
    ftp.storbinary("STOR remote_file.txt", file)
    
with open("local_file.txt", "wb") as file:
    ftp.retrbinary("RETR remote_file.txt", file.write)

# 目录和文件管理
ftp.cwd("/path/to/directory")
current_dir = ftp.pwd()
file_list = ftp.nlst("/path/to/directory")
dir_list = ftp.dir("/path/to/directory")
ftp.delete("/path/to/file.txt")
ftp.rename("/path/from/file.txt", "/path/to/file.txt")
ftp.mkd("/path/to/new_directory")
ftp.rmd("/path/to/directory")

# 其他功能
ftp.quit()
welcome_message = ftp.getwelcome()
response = ftp.sendcmd("CMD")
ftp.voidcmd("CMD")
ftp.voidresp()

相关推荐

  1. python开发

    2024-05-10 02:30:02       29 阅读
  2. 量化交易入门(十Python开发-NumPy

    2024-05-10 02:30:02       31 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-10 02:30:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-10 02:30:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-05-10 02:30:02       87 阅读
  4. Python语言-面向对象

    2024-05-10 02:30:02       96 阅读

热门阅读

  1. 第22天 数据库

    2024-05-10 02:30:02       35 阅读
  2. 深入解析C#中的接口设计原则

    2024-05-10 02:30:02       36 阅读
  3. const修饰的成员函数

    2024-05-10 02:30:02       34 阅读
  4. C数据结构:队列

    2024-05-10 02:30:02       39 阅读
  5. Spring Security 入门 2

    2024-05-10 02:30:02       25 阅读
  6. AtCoder Beginner Contest 336 B题 CTZ

    2024-05-10 02:30:02       30 阅读
  7. js强大的运算符:??、??=

    2024-05-10 02:30:02       32 阅读
  8. C:STDIN_FILENO和stdin的区别

    2024-05-10 02:30:02       31 阅读
  9. 用wordpress为外贸进出口公司搭建多语言国际站

    2024-05-10 02:30:02       35 阅读