• 用twisted 发送请求


    # coding: utf-8
    # @Time    : 2022-05-18 13:01
    # @Author  : AngDH
    from twisted.internet import reactor
    from twisted.web.client import Agent
    from twisted.web.http_headers import Headers
    
    # 相当于客户端角色
    agent = Agent(reactor)
    
    defered = agent.request(
        b'GET',
        b'http://www.baidu.com/s?wd=python',
        Headers({"User-Agent": ["python"]}),
        None)
    
    
    def successCallback(response):
        print('Response received:', response.code)
    
    
    defered.addCallback(successCallback)
    
    
    def errorCallback(error):
        print("error:", str(error))
    
    
    defered.addErrback(errorCallback)
    
    
    def callbackShutdown(ignored):
        reactor.stop()
    
    
    defered.addBoth(callbackShutdown)
    
    reactor.run()

    # coding: utf-8
    # @Time    : 2022-05-18 13:01
    # @Author  : AngDH
    from twisted.internet import reactor
    from twisted.internet.defer import succeed
    from twisted.web.client import Agent
    from twisted.web.http_headers import Headers
    from twisted.web.iweb import IBodyProducer
    from zope.interface import implementer
    
    
    @implementer(IBodyProducer)
    class BytesProducer(object):
    
        def __init__(self, body):
            self.body = body
            self.length = len(body)
    
        def startProducing(self, consumer):
            consumer.write(self.body)
            return succeed(None)
    
        def pauseProducting(self):
            pass
    
        def stopProducing(self):
            pass
    
    
    # 相当于客户端角色
    agent = Agent(reactor)
    
    defered = agent.request(
        b'POST',
        b'http://www.baidu.com/s?wd=python',
        Headers({"User-Agent": ["python"]}),
        BytesProducer('请求体'.encode()))
    
    
    def successCallback(response):
        print('Response received:', response.code)
    
    
    defered.addCallback(successCallback)
    
    
    def errorCallback(error):
        print("error:", str(error))
    
    
    defered.addErrback(errorCallback)
    
    
    def callbackShutdown(ignored):
        reactor.stop()
    
    
    defered.addBoth(callbackShutdown)
    
    reactor.run()

    # coding: utf-8
    # @Time    : 2022-05-18 13:01
    # @Author  : AngDH
    from twisted.internet import reactor
    from twisted.internet.defer import DeferredList
    from twisted.web.client import Agent
    from twisted.web.http_headers import Headers
    
    # 相当于客户端角色
    agent = Agent(reactor)
    
    
    def successCallback(response):
        print('Response received:', response.code)
    
    
    def errorCallback(error):
        print("error:", str(error))
    
    
    def callbackShutdown(ignored):
        reactor.stop()
    
    
    _ = []
    
    for url in [b"http://www.baidu.com",
                b"http://www.taobao.com",
                b"http://www.jd.com",
                b"http://www.tmall.com",
                b"http://www.tencent.com",
                b"http://www.douban.com",
                ]:
        d = agent.request(
            b'GET',
            url,
            Headers({"User-Agent": ["python"]}),
            None)
        d.addCallback(successCallback)
        d.addErrback(errorCallback)
        _.append(d)
    
    # 统一管理 多个defered对象
    dl = DeferredList(_)
    dl.addBoth(callbackShutdown)
    
    reactor.run()
  • 相关阅读:
    HDU 1059 Dividing(多重背包)
    新华网,要厚道
    js与DOM初步:访问html元素
    Hacker News网站的文章排名算法工作原理
    做技术,是个精益求精的事情
    百度贴吧客户端(Android)网络通信行为分析
    Storm同时接收多个源(spout和bolt)
    各种流处理系统的比较
    Kafka学习
    关联规则推荐及Apriori算法
  • 原文地址:https://www.cnblogs.com/angdh/p/16284344.html
Copyright © 2020-2023  润新知