autocomplete.py 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. from lxml import etree
  2. from requests import get
  3. from json import loads
  4. def dbpedia(query):
  5. # dbpedia autocompleter
  6. autocomplete_url = 'http://lookup.dbpedia.org/api/search.asmx/KeywordSearch?QueryString={q}' # noqa
  7. response = get(autocomplete_url.format(q=query))
  8. results = []
  9. if response.ok:
  10. dom = etree.fromstring(response.content)
  11. results = dom.xpath('//a:Result/a:Label//text()',
  12. namespaces={'a': 'http://lookup.dbpedia.org/'})
  13. return results
  14. def google(query):
  15. # google autocompleter
  16. autocomplete_url = 'http://suggestqueries.google.com/complete/search?client=toolbar&q={q}' # noqa
  17. response = get(autocomplete_url.format(q=query))
  18. results = []
  19. if response.ok:
  20. dom = etree.fromstring(response.content)
  21. results = dom.xpath('//suggestion/@data')
  22. return results
  23. def wikipedia(query):
  24. # wikipedia autocompleter
  25. url = 'https://en.wikipedia.org/w/api.php?action=opensearch&search={q}&limit=10&namespace=0&format=json' # noqa
  26. resp = loads(get(url.format(q=query)).text)
  27. return resp[1]
  28. backends = {'dbpedia': dbpedia,
  29. 'google': google,
  30. 'wikipedia': wikipedia
  31. }