Browse Source

[fix] engine duden - don't raise exception on empty result list

Duden expects a word in German, so with query "amazing" the site finds nothing
and respons a 404:

    httpx.HTTPStatusError: Client error '404 Not Found' for url\
      'https://www.duden.de/suchen/dudenonline/amazing'

[1] https://github.com/searxng/searxng/issues/1543#issuecomment-1193317054

Suggested-by: @allendema [1]
Signed-off-by: Markus Heiser <markus.heiser@darmarit.de>
Markus Heiser 2 years ago
parent
commit
77a0f33819
1 changed files with 7 additions and 0 deletions
  1. 7 0
      searx/engines/duden.py

+ 7 - 0
searx/engines/duden.py

@@ -7,6 +7,7 @@ import re
 from urllib.parse import quote, urljoin
 from lxml import html
 from searx.utils import extract_text, eval_xpath, eval_xpath_list, eval_xpath_getindex
+from searx.network import raise_for_httperror
 
 # about
 about = {
@@ -47,6 +48,7 @@ def request(query, params):
     # after the last page of results, spelling corrections are returned after a HTTP redirect
     # whatever the page number is
     params['soft_max_redirects'] = 1
+    params['raise_for_httperror'] = False
     return params
 
 
@@ -56,6 +58,11 @@ def response(resp):
     '''
     results = []
 
+    if resp.status_code == 404:
+        return results
+
+    raise_for_httperror(resp)
+
     dom = html.fromstring(resp.text)
 
     number_of_results_element = eval_xpath_getindex(