MCPcopy
hub / github.com/searx/searx / response

Function response

searx/engines/xpath_flex.py:87–121  ·  view source on GitHub ↗
(resp)

Source from the content-addressed store, hash-verified

85
86
87def response(resp):
88 results = []
89 dom = html.fromstring(resp.text)
90
91 for result in eval_xpath_list(dom, results_xpath):
92
93 single_result = {
94 'template': template
95 }
96
97 for single_field in field_definition:
98 single_field = {**default_field_settings, **single_field}
99 try:
100 if single_field['single_element']:
101 node = eval_xpath(result, single_field['xpath'])
102 else:
103 node = eval_xpath_list(result, single_field['xpath'])
104
105 if 'extract' in single_field and single_field['extract'] == 'url':
106 value = extract_url(node, search_url)
107 elif 'extract' in single_field and single_field['extract'] == 'boolean':
108 value = (isinstance(node, list) and len(node) > 0)
109 elif 'extract' in single_field and single_field['extract'] == 'boolean_negate':
110 value = (isinstance(node, list) and len(node) < 1)
111 else:
112 value = extract_text(node)
113
114 single_result[single_field['field_name']] = value
115 except Exception as e:
116 logger.warning('error in resolving field %s:\n%s', single_field['field_name'], e)
117 single_result[single_field['field_name']] = unresolvable_value
118
119 results.append(single_result)
120
121 return results

Callers

nothing calls this directly

Calls 4

eval_xpath_listFunction · 0.90
eval_xpathFunction · 0.90
extract_urlFunction · 0.90
extract_textFunction · 0.90

Tested by

no test coverage detected