etools.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  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.utils import extract_text, eval_xpath
  13. categories = ['general']
  14. paging = False
  15. language_support = False
  16. safesearch = True
  17. base_url = 'https://www.etools.ch'
  18. search_path = '/searchAdvancedSubmit.do'\
  19. '?query={search_term}'\
  20. '&pageResults=20'\
  21. '&safeSearch={safesearch}'
  22. def request(query, params):
  23. if params['safesearch']:
  24. safesearch = 'true'
  25. else:
  26. safesearch = 'false'
  27. params['url'] = base_url + search_path.format(search_term=quote(query), safesearch=safesearch)
  28. return params
  29. def response(resp):
  30. results = []
  31. dom = html.fromstring(resp.text)
  32. for result in eval_xpath(dom, '//table[@class="result"]//td[@class="record"]'):
  33. url = eval_xpath(result, './a/@href')[0]
  34. title = extract_text(eval_xpath(result, './a//text()'))
  35. content = extract_text(eval_xpath(result, './/div[@class="text"]//text()'))
  36. results.append({'url': url,
  37. 'title': title,
  38. 'content': content})
  39. return results