>>> from wsgiproxy.exactproxy import proxy_exact_request
>>> from webtest import TestApp
>>> app = TestApp(proxy_exact_request)
>>> resp = app.get('http://python.org')
>>> resp
<200 OK text/html body='
>>> print resp
Response: 200 OK
Date: ...
Server: Apache/2.2.3 (Debian) DAV/2 SVN/1.4.2 mod_ssl/2.2.3 OpenSSL/0.9.8c
Last-Modified: ...
ETag: ...
Accept-Ranges: bytes
Content-Type: text/html
Content-Length: ...
...
>>> from wsgifilter.proxyapp import DebugHeaders
>>> app = TestApp(DebugHeaders(proxy_exact_request))
>>> app.get('http://python.org/')
Incoming headers: (GET http://python.org/ SCRIPT_NAME='')
Host: python.org:80
Outgoing headers: (200 OK)
Date: ...
Server: Apache/2.2.3 (Debian) DAV/2 SVN/1.4.2 mod_ssl/2.2.3 OpenSSL/0.9.8c
Last-Modified: ...
Etag: ...
Accept-Ranges: bytes
Content-Length: ...
Content-Type: text/html
<200 OK text/html body='
>>> app = TestApp(proxy_exact_request)
>>> resp = app.get('http://python.org')
>>> resp.lxml
>>> for a in resp.lxml.xpath('//a'):
... if a.get('href').startswith('http:'):
... continue
... print a.get('href'), a.text_content()
/
#left-hand-navigation
#content-body
/search Advanced Search
/about/ About
/news/ News
/doc/ Documentation
/download/ Download
/community/ Community
/psf/ Foundation
/dev/ Core Development
/links/ Links
/download/releases/2.5.1 Quick Links (2.5.1)
/ftp/python/2.5.1/python-2.5.1.msi Windows Installer
/ftp/python/2.5.1/Python-2.5.1.tar.bz2 Source Distribution
/community/jobs Python Jobs
/psf/donations/ Donate to the PSF
/about/success/usa
about/success/rackspace Rackspace
about/success/ilm Industrial Light and Magic
about/success/astra AstraZeneca
about/success/honeywell Honeywell
about/success and many others
/about/quotes more...
/doc/topics/database Databases
/doc/topics/database/modules Others
/community/sigs/current/edu-sig Education
/about/apps Networking
/about/apps Software Development
/about/apps Game Development
/about/apps more...
/psf/license open source license
/psf Python Software Foundation (PSF)
/about Read more
/download try Python now
/download/releases/3.0 second alpha release
/download/releases/3.0 first alpha release
/channews.rdf RSS
/about/website Website maintained by the Python community
/psf Python Software Foundation
/about/legal Legal Statements
>>> resp = resp.click('Legal Statements')
>>> resp.request.url
'http://python.org/about/legal'
>>> resp.status
'301 Moved Permanently'
>>> resp = resp.follow()
>>> #resp.showbrowser()
>>> resp.html.html.head.title
Legal Statements
>>> import re
>>> re.search(r'(.*?)', resp.body).group(1)
'Legal Statements'