webclient, 顾名思义, 就是一个web客户端.
我写这么个东西, 主要是为了节省时间和精力, 因为urllib和urllib2一起, 使用起来, 想实现一些特定的功能, 实在是太不爽了.
比如想查看自己的爬虫到底都往外发送了哪些cookie, 发送了些什么数据, 查看服务器响应的头信息, 都特别的麻烦, 于是, 查阅N多资料, 终于把自己常用的一些需要监视的数据, 给监视起来了, 使用起来超级方便, 让我能够迅速的将关注的重点集中到"处理抓回来的数据"上, 真是使用python做爬虫的超级利器.
webclient主要对http协议过程中发送的http header和服务器返回的 http response info, 均可以print 调试(实际上我改为了 logging记录)
print http request headers # 打印 http 请求头信息
print http request cookies # 打印 http 请求的时候发送的cookie信息
print http request post data # 打印 http 请求的时候发送的data( 只有 POST 请求会发送数据, GET请求, 不会发送数据)
decode gzipped response # 对服务器使用gzip传输回来的gzip数据直接解压
以上4个,均是为了解决python编写爬虫的时候, 想查看cookie和发送的数据而特意收集整理到这个简单的库中的.
通过我自己的使用和调试, 我发现这个东西真的太好用了, 帮我节省了很多调试时间. 也少写了很多代码, 我甚至觉得, 我做这个整合的事情, 可以和 request2 这个库媲美了.
from webclient import WebBrowser def test_webbrowser(url): browser = WebBrowser() html = browser._request(url) print type(html) print html[:200] def test_cookie(url,cookies): browser = WebBrowser() html = browser._request(url,cookies=cookies) print type(html) print html[:200] if __name__ == "__main__": url ='http://www.google.com' # google is a very good test url, it jumps to google.com.hk for chinese user test_webbrowser(url) test_cookie(url, 'Me=12') #this is a wrong cookie for test, visit google.com will jump 2 times
执行以上测试代码就可以看到http请求过程中的请求头信息了.
请fork: https://github.com/encorehu/webclient 有任何问题, 请到这个repo的issues里提问, 或者在本文后面留言, 建议去github添加issues.
1. 现在还不支持http协议的 keep-alive, 因为我还没学会http连接的重复使用(虽然他们说建立http连接很耗时, 但是, 这个属于高级内容了).
2. http连接池, 算了, 别想了, 这个是一个简单的模拟.
3. 单独某个http方法的模拟(目前直接返回html页面的内容, 没有单独的get, post, put, delete方法, 我想你该用httplib, 我这个东西, 只是为了模拟webbrowser), 以后再搞.
4. ajax的模拟, 目前已经暂时支持, 但是这个还要深入研究http协议和jquery等一些现成的js库是怎么发送ajax请求的.