summaryrefslogtreecommitdiff
path: root/searx/engines/cppreference.py
blob: 5ffbf6e59620ee0d68edebcde8e3981b34f720ac (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# SPDX-License-Identifier: AGPL-3.0-or-later
"""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