From b1431e1670771481961a9e7cf6816d30f6afcfaa Mon Sep 17 00:00:00 2001 From: Yaksh Bariya Date: Tue, 27 Feb 2024 17:47:20 +0530 Subject: [feat] engine: implementation of cppreference --- searx/engines/cppreference.py | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 searx/engines/cppreference.py (limited to 'searx/engines/cppreference.py') diff --git a/searx/engines/cppreference.py b/searx/engines/cppreference.py new file mode 100644 index 000000000..b13cf730b --- /dev/null +++ b/searx/engines/cppreference.py @@ -0,0 +1,39 @@ +# SPDX-License-Identifier: AGPL-3.0-or-later +# lint: pylint +"""Cppreference +""" +from lxml import html +from searx.utils import eval_xpath + + +about = { + "website": "https://en.cppreference.com/", + "wikidata_id": None, + "official_api_documentation": None, + "use_official_api": False, + "require_api_key": False, + "results": 'HTML', +} + + +categories = ['it'] +url = 'https://en.cppreference.com/' +search_url = url + 'mwiki/index.php?title=Special%3ASearch&search={query}' + + +def request(query, params): + params['url'] = search_url.format(query=query) + return query + + +def response(resp): + results = [] + dom = html.fromstring(resp.text) + for result in eval_xpath(dom, '//div[contains(@class, "mw-search-result-heading")]'): + results.append( + { + 'url': url + eval_xpath(result, './/a/@href')[0], + 'title': eval_xpath(result, './/a/text()')[0], + } + ) + return results -- cgit v1.2.3