Академический Документы
Профессиональный Документы
Культура Документы
com @edsu
http://www.flickr.com/photos/42311564@N00/2355590274/
Dojo: Python for Web Interaction Rob Sanderson, Ed Summers Dev8D, Feb 24-27 2010, London
Overview
Python Dojo
Python Introduction Web Programming Kata: Find bands on Wikipedia Find nationality of band Find population of nation Create chart of bands normalized by population
Dojo: Python for Web Interaction Rob Sanderson, Ed Summers Dev8D, Feb 24-27 2010, London
>>> {key : value, key2 : value2, } >>> None >>> True, False # booleans
Dojo: Python for Web Interaction Rob Sanderson, Ed Summers Dev8D, Feb 24-27 2010, London
Dojo: Python for Web Interaction Rob Sanderson, Ed Summers Dev8D, Feb 24-27 2010, London
>>> import module >>> from module import something >>> from module import *
# import everything
Dojo: Python for Web Interaction Rob Sanderson, Ed Summers Dev8D, Feb 24-27 2010, London
Dojo: Python for Web Interaction Rob Sanderson, Ed Summers Dev8D, Feb 24-27 2010, London
Dojo: Python for Web Interaction Rob Sanderson, Ed Summers Dev8D, Feb 24-27 2010, London
urllib
>>> import urllib
>>> urllib.quote('~azaroth/s?q=http://foo.com/')
'%7Eazaroth/s%3Fq%3Dhttp%3A//foo.com/'
>>> urllib.unquote('%7Eazaroth/s%3Fq%3Dhttp%3A//foo.com/')
'~azaroth/s?q=http://foo.com/'
>>> fh = urllib.urlopen('http://www.google.com/')
>>> html = fh.read()
>>> fh.close()
>>> fh.getcode()
200
>>> fh.headers.dict['content-type']
'text/html; charset=ISO-8859-1'
Dojo: Python for Web Interaction Rob Sanderson, Ed Summers Dev8D, Feb 24-27 2010, London
urllib2
>>> >>>
>>> >>> >>> import urllib2
ph = urllib2.ProxyHandler(
{'http' : 'http://proxyout.lanl.gov:8080/'})
opener = urllib2.build_opener(ph)
urllib2.install_opener(opener)
# From now on, all requests will go through proxy
Dojo: Python for Web Interaction Rob Sanderson, Ed Summerrs Dev8D, Feb 24-27 2010, London
urlparse
>>> import urlparse
>>> pr = urlparse.urlparse(
'https://www.google.com/search?q=foo&bar=bz#frag')
>>> pr.scheme
'https'
>>> pr.hostname
'www.google.com'
>>> pr.path
'/search'
>>> pr.query
'q=foo&bar=bz'
>>> pr.fragment
'frag'
Dojo: Python for Web Interaction Rob Sanderson, Ed Summers Dev8D, Feb 24-27 2010, London
httplib
>>> >>> >>> >>> import httplib
cxn = httplib.HTTPConnection('www.google.com')
hdrs = {'Accept' : 'application/rdf+xml'}
path = "/search?q=some+search+query"
>>> cxn.request("HEAD", path, headers=hdrs) >>> resp = cxn.getresponse() >>> resp.status 200 >>> resp_hdrs = dict(resp.getheaders()) >>> resp_hdrs['content-type'] 'text/html; charset=ISO-8859-1' >>> data = resp.read() >>> cxn.close()
# :(
Dojo: Python for Web Interaction Rob Sanderson, Ed Summers Dev8D, Feb 24-27 2010, London
lxml
$ easy_install lxml
>>> from lxml import etree
>>> et = etree.XML('<a b="B"> A <c>C</c> </a>')
>>> et.text
' A '
>>> et.attrib['b']
'B'
>>> for elem in et.iterchildren():
... print elem
<Element c at 16d1ed0>
>>> html = etree.parse(StringIO.StringIO("<html><p>hi"),
parser=etree.HTMLParser())
>>> html.xpath('/html/body/p')
[<Element p at 16e00f0>]
Dojo: Python for Web Interaction Rob Sanderson, Ed Summers Dev8D, Feb 24-27 2010, London
rdflib
$ easy_install rdflib
>>> >>>
>>> >>> >>> import rdflib as rdf
inp = rdf.URLInputSource(
'http://xmlns.com/foaf/spec/20100101.rdf')
inp2 = rdf.StringInputSource("<a> <b> <c> .")
graph = rdf.ConjunctiveGraph()
graph.parse(inp)
>>> sparql = "SELECT ?l WHERE {?w rdfs:label ?l . }" >>> res = graph.query(sparql, initNs={'rdfs':rdf.RDFS.RDFSNS})) >>> res.selected[0] rdf.Literal(u'Given name') >>> nt = graph.serialize(format='nt')
Dojo: Python for Web Interaction Rob Sanderson, Ed Summers Dev8D, Feb 24-27 2010, London
json / simplejson
>>> try: import simplejson as json
... except ImportError: import json
>>> data = {'o' : (True, None, 1.0), "ints" : [1,2,3]}
>>> json.dumps(data)
'{"o": [true, null, 1.0], "ints": [1, 2, 3]}'
>>> json.dumps(data, separators=(',', ':')) '{"o":[true,null,1.0],"ints":[1,2,3]}'
>>> json.loads('[1,2,"foo",null]')
[1, 2, u'foo', None]
# compact
Dojo: Python for Web Interaction Rob Sanderson, Ed Summers Dev8D, Feb 24-27 2010, London
mod_python, mod_wsgi
import cgitb
from mod_python import apache
from mod_python.util import FieldStorage
def handler(req):
try:
form = FieldStorage(req) # dict-like object for query path = req.uri
req.status = 200
req.content_type = "text/plain"
req.send_http_header()
req.write(path)
except:
req.content_type = "text/html"
cgitb.Hook(file=req).handle()
return apache.OK
Dojo: Python for Web Interaction Rob Sanderson, Ed Summers Dev8D, Feb 24-27 2010, London