""" not Evil (Onions) @website http://hss3uro2hsxfogfq.onion @provide-api yes (http://hss3uro2hsxfogfq.onion/api.htm) @using-api no @results HTML @stable no @parse url, title, content """ from urllib.parse import urlencode from lxml import html from searx.engines.xpath import extract_text # engine dependent config categories = ['onions'] paging = True page_size = 20 # search-url base_url = 'http://hss3uro2hsxfogfq.onion/' search_url = 'index.php?{query}&hostLimit=20&start={pageno}&numRows={page_size}' # specific xpath variables results_xpath = '//*[@id="content"]/div/p' url_xpath = './span[1]' title_xpath = './a[1]' content_xpath = './text()' # do search-request def request(query, params): offset = (params['pageno'] - 1) * page_size params['url'] = base_url + search_url.format(pageno=offset, query=urlencode({'q': query}), page_size=page_size) return params # get response from search-request def response(resp): results = [] # needed because otherwise requests guesses wrong encoding resp.encoding = 'utf8' dom = html.fromstring(resp.text) # parse results for result in dom.xpath(results_xpath): url = extract_text(result.xpath(url_xpath)[0]) title = extract_text(result.xpath(title_xpath)[0]) content = extract_text(result.xpath(content_xpath)) # append result results.append({'url': url, 'title': title, 'content': content, 'is_onion': True}) return results