import httplib
from xml.dom import minidom
from xml.sax.saxutils import escape

template="""<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <gs:doGoogleSearch xmlns:gs="urn:GoogleSearch">
      <key>%(key)s</key>
      <q>%(q)s</q>
      <start>0</start>
      <maxResults>10</maxResults>
      <filter>true</filter>
      <restrict/>
      <safeSearch>false</safeSearch>
      <lr/>
      <ie>latin1</ie>
      <oe>latin1</oe>
    </gs:doGoogleSearch>
  </soap:Body>
</soap:Envelope>"""

def do_search(key, q):
  headers = {'Content-type':'text/xml', 'SOAPAction':'urn:GoogleSearchAction'}
  request = template % {'key':escape(key), 'q':escape(q)}

  connection = httplib.HTTPConnection("api.google.com", 80)
  connection.request("POST", "/search/beta2", request, headers)
  response = connection.getresponse()

  document = minidom.parseString(response.read())
  if response.status == 500:
    return document.getElementsByTagName("faultstring")
  else:
    return document.getElementsByTagName("URL")

if __name__ == '__main__':
  key = "00000000000000000000000000000000"
  for node in do_search(key, "absurd obfuscation"):
    print "".join([child.data for child in node.childNodes])