python3 http.client使用实例

本文介绍了一个使用Python的http.client模块进行HTTP GET和POST请求的示例。通过代码演示了如何设置请求头,发送请求,接收响应状态及读取响应内容。此外,还展示了如何使用urllib.parse模块对URL参数进行编码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用实例

# -*- coding: utf-8 -*-
# @Time    : 2020/6/8 5:24 下午
# @Author  : renwoxing
# @File    : httpclient.py
# @Software: PyCharm

import http.client
 
if __name__ == '__main__':
    headers = {
        "Connection": "keep-alive",
    }
    conn = http.client.HTTPConnection('10.9.1.17:8000')
    for var in range(100):
        conn.request('GET', '/json_test', None, headers)
        res = conn.getresponse()
     print(res.status, res.code)

    conn.close()
    print("连接已经关闭")
#coding=utf-8
import http.client, urllib.parse
import http.client, urllib.parse
import random

USER_AGENTS = [
    "Opera/9.80 (Macintosh; Intel Mac OS X 10.6.8; U; fr) Presto/2.9.168 Version/11.52",
    'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
]

def get_demo(num,keyword):
    page = urllib.parse.urlencode({'page':num})
    params = urllib.parse.urlencode({})

    headers = {'Referer': 'http://t66y.com/index.php',
               'User-Agent': random.choice(USER_AGENTS ),

               'Accept-Language': 'zh-CN,zh;q=0.9',
               }
    conn = http.client.HTTPConnection("t66y.com", timeout=10)

    conn.request("GET", "/thread0806.php?fid=22&"+page, params, headers)

    r1 = conn.getresponse()

    #print(r1.read())
    html = r1.read()
    data = html.decode('gbk')  # This will return entire content.
    content = data.find(keyword)

    if content != -1:
        print('bingo:'+page)
    else:
        print('try {},status:{}'.format(page, r1.status))


def post_demo():
    params = urllib.parse.urlencode({'qruuid': 'asdf', 'user_uuid': '3423412dfasf'})
    headers = {"Content-type": "application/x-www-form-urlencoded",
               "Accept": "application/json"}
    conn = http.client.HTTPSConnection("wx.coderr.cn")
    conn.request("POST", "/api/qrcode", params, headers)
    response = conn.getresponse()
    print(response.status, response.reason)

    if not response.closed:
        data = response.read()
        print(data, type(data.decode('utf-8')))

    conn.close()

if __name__ == '__main__':
	pass

参考范例:https://www.journaldev.com/19213/python-http-client-request-get-post

<think>嗯,用户想了解Python中comtypes.client模块的使用方法和示例。首先,我需要回忆一下这个模块的主要用途。comtypes主要用于与COM组件交互,允许Python作为客户端或服务器。用户可能需要在Windows环境下自动化操作Office软件或者其他COM兼容的应用程序,比如Word、Excel或者语音合成引擎。 接下来,我应该检查用户提供的引用内容。引用[1]提到comtypes是一个纯Python的轻量级COM框架,基于ctypes。引用[3]中的示例代码展示了如何使用comtypes.client.CreateObject来创建语音合成和文件流对象,这可能与SAPI.SpVoice有关。引用[2]展示了如何创建Word.Application实例并调用对话框,这应该与Word自动化相关。 用户可能需要基础的安装步骤和简单示例。首先,安装comtypes库,使用pip install comtypes。然后,导入模块,创建COM对象,调用方法和属性。例如,启动Word应用程序,打开文档,或者进行文本转语音的操作。 考虑到用户可能不太熟悉COM编程,需要解释清楚每个步骤的作用。比如,使用CreateObject函数创建COM对象实例,然后通过对象的方法执行操作。同时,要提到异常处理,比如在操作结束后正确关闭对象,释放资源,避免进程残留。 还需要注意示例中的路径问题,比如文件路径需要使用双反斜杠或者原始字符串,避免转义字符的问题。另外,可能需要提醒用户不同的COM对象有不同的属性和方法,需要参考对应组件的文档。 另外,用户提供的引用中有使用SpeechLib生成语音的示例,这可能是一个常见的用例。可以详细说明如何设置音频输出流,读取文本文件并转换为语音文件。同时,引用[2]中的Word应用示例可以扩展,比如如何打开查找替换对话框,或者保存文档。 最后,用户可能想了解更高级的应用,比如事件处理或者作为COM服务器,但作为基础使用,应重点放在创建对象、调用方法和属性上。同时,强调资源管理的重要性,确保在完成操作后正确关闭应用程序,避免内存泄漏。 总结回答结构:安装步骤、基础用法、Word自动化示例、语音合成示例、注意事项、相关扩展问题。确保每个示例代码都有详细注释,解释关键步骤。同时,在末尾生成相关问题,引导用户深入学习。</think>### Python comtypes.client 模块使用详解 comtypes.clientPython 中用于操作 COM 组件的关键模块,主要用于自动化控制 Windows 应用程序(如 Office、语音引擎等)。以下是具体使用方法和示例: --- #### 一、环境准备 1. **安装模块** ```bash pip install comtypes ``` 2. **基础流程** - 导入模块:`from comtypes.client import CreateObject` - 创建 COM 对象实例 - 调用对象的方法/属性 - 释放资源 --- #### 二、基础示例:操作 Word 文档 ```python from comtypes.client import CreateObject # 创建 Word 应用程序实例 word = CreateObject("Word.Application") word.Visible = True # 显示窗口 # 新建文档 doc = word.Documents.Add() doc.Content.Text = "Hello, COM Automation!" # 打开查找替换对话框(需通过 SendKeys 模拟快捷键) word.Dialogs(99).Show() # 99 对应 wdDialogEditReplace [^2] word.Quit() # 退出程序 ``` --- #### 三、高级示例:文本转语音(TTS) ```python from comtypes.client import CreateObject from comtypes.gen import SpeechLib # 创建语音引擎和文件流 engine = CreateObject("SAPI.SpVoice") stream = CreateObject("SAPI.SpFileStream") # 设置输出文件 infile = r&#39;E:\text.txt&#39; # 原始文本路径 outfile = r&#39;E:\output.wav&#39; # 音频保存路径 stream.Open(outfile, SpeechLib.SSFMCreateForWrite) engine.AudioOutputStream = stream # 绑定输出流 # 读取文本并生成语音 with open(infile, &#39;r&#39;, encoding=&#39;utf-8&#39;) as f: text = f.read() engine.speak(text) stream.Close() # 释放资源 [^3] ``` --- #### 四、关键注意事项 1. **对象释放** 需显式调用 `.Quit()` 或 `.Close()` 关闭 COM 对象,否则可能导致进程残留。 2. **类型库生成** 首次使用 COM 对象时,comtypes 会自动生成 `comtypes.gen` 目录下的类型库(如 `SpeechLib`)。 3. **路径处理** 使用原始字符串(如 `r"E:\path"`)避免转义符问题。 --- #### 五、扩展应用场景 - **Excel 自动化**:操作工作表、计算公式 - **CAD 软件控制**:通过 COM 接口生成图纸 - **工业设备通信**:连接 PLC 等设备的 COM 驱动 --- §§ 1. 如何处理 COM 组件调用时的权限问题? 2. 如何通过 comtypes 实现双向通信(事件监听)? 3. 哪些场景下 comtypes 比 pywin32 更适用?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值