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