216def response(resp):
217 """parse response"""
218
219 results = []
220 dom = html.fromstring(resp.text)
221
222 url_xpath = './/div[contains(@class,"compTitle")]/h3/a/@href'
223 title_xpath = './/h3//a/@aria-label'
224
225 domain = resp.search_params['domain']
226 if domain == "search.yahoo.com":
227 url_xpath = './/div[contains(@class,"compTitle")]/a/@href'
228 title_xpath = './/div[contains(@class,"compTitle")]/a/h3/span'
229
230
231 for result in eval_xpath_list(dom, '//div[contains(@class,"algo-sr")]'):
232 url = eval_xpath_getindex(result, url_xpath, 0, default=None)
233 if url is None:
234 continue
235 url = parse_url(url)
236
237 title = eval_xpath_getindex(result, title_xpath, 0, default='')
238 title: str = extract_text(title)
239 content = eval_xpath_getindex(result, './/div[contains(@class, "compText")]', 0, default='')
240 content: str = extract_text(content, allow_none=True)
241
242
243 results.append(
244 {
245 'url': url,
246
247
248 'title': " ".join(html_to_text(title).strip().split()),
249 'content': " ".join(html_to_text(content).strip().split()),
250 }
251 )
252
253 for suggestion in eval_xpath_list(dom, '//div[contains(@class, "AlsoTry")]//table//a'):
254
255 results.append({'suggestion': extract_text(suggestion)})
256
257 return results