用于 HTTP 支持的 Python 库 - 包括内容编码

Python library for HTTP support - including Content-Encoding

提问人:mario 提问时间:7/11/2010 最后编辑:mario 更新时间:7/14/2010 访问量:231

问:

我有一个抓取工具,可以查询不同的网站。他们中的一些人以不同的方式使用内容编码。由于我正在尝试模拟 AJAX 查询并且需要模仿 Mozilla,因此我需要全面支持。Python 有多个 HTTP 库,但似乎都不完整:

httplib 看起来很低级,更像是一个 HTTP 数据包嗅探器。

urllib2 是某种精心设计的骗局。各种 Web 客户端函数有十几个处理程序,但像 Content-Encoding 这样的强制性 HTTP 功能似乎不是。

机械化:很好,对于我的任务来说已经有些矫枉过正了,但只支持 CE 'gzip'。

httplib2:听起来很有前途,但实际上在“deflate”编码上失败了,因为原始 deflate 和 zlib 流的差异。

那么还有其他选择吗?我简直不敢相信我应该重新实现上述库的解决方法。将修补版本与我的应用程序一起分发并不是一个好主意,因为如果相应的库作为单独的分发包提供,打包程序可能会再次删除它。

我几乎不敢说,但 PHP 中的 http 函数 API 要好得多。除了 Content-Encoding:*,我有时可能还需要 multipart/form-data。那么,是否有用于 http 检索的综合第三方库?

蟒蛇 HTTP

评论

1赞 Metalshark 7/11/2010
第二个问题是 stackoverflow.com/questions/680305/ 的重复......
0赞 mario 7/11/2010
@Metalshark:这个海报模块看起来很酷+简单。已添加书签。谢谢!

答:

-1赞 karlw 7/11/2010 #1

美丽的汤可能会起作用。只是把它扔在那里。

评论

0赞 Peter Lyons 7/14/2010
BeautifulSoup 用于解析 HTML 和类似的标记。它不处理 HTTP。
1赞 Peter Lyons 7/14/2010 #2

我会考虑调用 cURL 的子进程或将 python 绑定用于 libcurl

这个描述来看,cURL 似乎支持 gzip 和 deflate。

评论

0赞 mario 7/14/2010
对于cmdline工作,我更喜欢wget而不是curl,因此有点不情愿,因为PycURL也是一个非标准扩展。但它可能是最成熟、功能最完整的解决方案,所以确实是最好的选择。