python写网页的库_用python写了一个简单的模拟浏览器抓取网页的库webclient

webclient是一个Python库,旨在简化网页抓取并方便调试。它弥补了urllib和urllib2在处理HTTP请求时的不便,特别是对于查看请求头、cookies、POST数据和解压gzip响应。通过logging记录,开发者可以更轻松地监控HTTP交互。尽管目前不支持HTTP连接的keep-alive和连接池,但webclient已经在模拟浏览器行为方面提供了一种实用的方法。
摘要由CSDN通过智能技术生成

为什么重新造webclient 这么个wheel

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请求的.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值