Browse Source

Merge pull request #2089 from ahmad-alkadri/fix/bing-check-nolinks

Added a check to see if the element contains links
Markus Heiser 2 years ago
parent
commit
afd71a6c0f
1 changed files with 8 additions and 3 deletions
  1. 8 3
      searx/engines/bing.py

+ 8 - 3
searx/engines/bing.py

@@ -9,7 +9,7 @@
 import re
 import re
 from urllib.parse import urlencode, urlparse, parse_qs
 from urllib.parse import urlencode, urlparse, parse_qs
 from lxml import html
 from lxml import html
-from searx.utils import eval_xpath, extract_text, eval_xpath_list, match_language
+from searx.utils import eval_xpath, extract_text, eval_xpath_list, match_language, eval_xpath_getindex
 from searx.network import multi_requests, Request
 from searx.network import multi_requests, Request
 
 
 about = {
 about = {
@@ -84,9 +84,12 @@ def response(resp):
 
 
     url_to_resolve = []
     url_to_resolve = []
     url_to_resolve_index = []
     url_to_resolve_index = []
-    for i, result in enumerate(eval_xpath_list(dom, '//li[contains(@class, "b_algo")]')):
+    i = 0
+    for result in eval_xpath_list(dom, '//ol[@id="b_results"]/li[contains(@class, "b_algo")]'):
 
 
-        link = eval_xpath(result, './/h2/a')[0]
+        link = eval_xpath_getindex(result, './/h2/a', 0, None)
+        if link is None:
+            continue
         url = link.attrib.get('href')
         url = link.attrib.get('href')
         title = extract_text(link)
         title = extract_text(link)
 
 
@@ -119,6 +122,8 @@ def response(resp):
 
 
         # append result
         # append result
         results.append({'url': url, 'title': title, 'content': content})
         results.append({'url': url, 'title': title, 'content': content})
+        # increment result pointer for the next iteration in this loop
+        i += 1
 
 
     # resolve all Bing redirections in parallel
     # resolve all Bing redirections in parallel
     request_list = [
     request_list = [