(resp)
| 85 | |
| 86 | |
| 87 | def 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 |
nothing calls this directly
no test coverage detected