Python通过http发送数据

先生

我有一个由Python flask构建的API服务器。我需要一组客户端/计算机,以通过发出http发布请求将数据发送到API服务器。

这里的数据实际上是html内容。(注意:我不是将合法数据转换为HTML / XML格式,数据本身就是我从网络上收集的HTML),通常每页大约200KB。而且我正在尝试通过使用串行/串行和压缩来最大程度地减轻网络负载。

我正在考虑,而不是通过网络发送原始HTML。有没有什么方法可以像将html对象序列化(BeautifulSoup汤?)并在服务器端反序列化。或使用某种压缩方法先压缩文件,然后将数据发布到API服务器。在服务器端,一旦接收到压缩后的数据,它就可以解压缩数据。

我做了什么:

(1)我尝试将原始HTML文本转换为汤对象,然后使用Pickle对其进行序列化。但是,它告诉我太多的递归并出错了。我还尝试过腌制原始html,压缩性能很差……大小几乎与原始html字符串相同。

(2)我尝试使用zlib预先压缩文件,然后将其压缩为原始文件的10%。但是,这是解决此问题的合法方法吗?

有什么想法吗?

先生

好吧,我从你们的评论中得到了很多启发,我想出了一个解决方案,该解决方案使用压缩HTML内容zlib并将数据发布到API服务器,在Flask API服务器端,我提取数据并推送到mongodb贮存。

这部分可能会减轻将来的麻烦。

客户端:

myinput = "http://www.exmaple.com/001"
myoutput = "<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" ... /html>"
result = {'myinput':myinput, 'myoutput': myoutput}
data = zlib.compress(str(result))
opener.open("www.host.com/senddata", data) 

服务器端:

@app.route('/contribute', methods=['POST'])
def contribute():
    try:
        data = request.stream.read()
        result = eval(zlib.decompress(data))
        db.result.insert(result)
    except:
        print sys.exc_info()
        pass
    return 'OK'

结果在mongodb中:

{ 
"_id" : ObjectId("534e0d346a1b7a0e48ff9076"), 
"myoutput" : "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" ... /html>",  
"myinput" : "http://www.exmaple.com/001" 
}

(注意:您已经注意到,mongo的最终版本以某种方式通过在它们前面加一个斜杠来逃避了所有明智的字符,例如双引号,但不确定如何将其改回。)

关于在烧瓶中检索二进制数据有一些讨论。喜欢这里因此,如果您从阅读,则不必弄乱标题request.stream directly

谢谢!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

通过HTTP异步发送数据

来自分类Dev

LotusScript:通过POST方法HTTP发送数据

来自分类Dev

通过python套接字发送文本“ http”

来自分类Dev

通过HTTP在JavaScript中发送二进制数据

来自分类Dev

Android通过HTTP发送数据并接收正文响应

来自分类Dev

Spring通过HTTP POST发送JSON数据不起作用

来自分类Dev

如何通过Django中的http请求发送数据

来自分类Dev

通过AngularJS发送带有多个数据的HTTP Post

来自分类Dev

通过HTTP发送XML

来自分类Dev

通过Http发送逻辑

来自分类Dev

通过 HTTP 发送 `NSManagedObjects`

来自分类Dev

通过AJAX发送数据

来自分类Dev

通过组件发送数据

来自分类Dev

通过连接发送数据

来自分类Dev

如何编码图像以通过Python HTTP服务器发送?

来自分类Dev

使用不同功能通过python在串口上发送数据

来自分类Dev

如何在Python中通过并行端口发送数据?

来自分类Dev

HTTP请求查询:我可以通过HTTP请求发送视频吗?并发送回json数据和图像?

来自分类Dev

通过 HTTP 请求发送文件

来自分类Dev

通过python发送邮件

来自分类Dev

通过DatagramSocket连续发送发送方数据

来自分类Dev

通过DatagramSocket连续发送发送方数据

来自分类Dev

通过AJAX发送数组数据

来自分类Dev

通过Flask发送POST数据

来自分类Dev

数据未通过通道发送

来自分类Dev

通过UDP发送XML数据

来自分类Dev

通过蓝牙发送/接收数据

来自分类Dev

通过通道发送数据被卡住

来自分类Dev

通过HttpOpenRequestA发送POST数据