etools.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. """
  2. eTools (Web)
  3. @website https://www.etools.ch
  4. @provide-api no
  5. @using-api no
  6. @results HTML
  7. @stable no (HTML can change)
  8. @parse url, title, content
  9. """
  10. from lxml import html
  11. from urllib.parse import quote
  12. from searx.engines.xpath import extract_text
  13. from searx.utils import eval_xpath
  14. categories = ['general']
  15. paging = False
  16. language_support = False
  17. safesearch = True
  18. base_url = 'https://www.etools.ch'
  19. search_path = '/searchAdvancedSubmit.do'\
  20. '?query={search_term}'\
  21. '&pageResults=20'\
  22. '&safeSearch={safesearch}'
  23. def request(query, params):
  24. if params['safesearch']:
  25. safesearch = 'true'
  26. else:
  27. safesearch = 'false'
  28. params['url'] = base_url + search_path.format(search_term=quote(query), safesearch=safesearch)
  29. return params
  30. def response(resp):
  31. results = []
  32. dom = html.fromstring(resp.text)
  33. for result in eval_xpath(dom, '//table[@class="result"]//td[@class="record"]'):
  34. url = eval_xpath(result, './a/@href')[0]
  35. title = extract_text(eval_xpath(result, './a//text()'))
  36. content = extract_text(eval_xpath(result, './/div[@class="text"]//text()'))
  37. results.append({'url': url,
  38. 'title': title,
  39. 'content': content})
  40. return results