179def response(resp):
180 """parse response"""
181
182 results = []
183 dom = html.fromstring(resp.text)
184
185 url_xpath = './/div[contains(@class,"compTitle")]/h3/a/@href'
186 title_xpath = './/h3//a/@aria-label'
187
188 domain = resp.search_params['domain']
189 if domain == "search.yahoo.com":
190 url_xpath = './/div[contains(@class,"compTitle")]/a/@href'
191 title_xpath = './/div[contains(@class,"compTitle")]/a/h3/span'
192
193
194 for result in eval_xpath_list(dom, '//div[contains(@class,"algo-sr")]'):
195 url = eval_xpath_getindex(result, url_xpath, 0, default=None)
196 if url is None:
197 continue
198 url = parse_url(url)
199
200 title = eval_xpath_getindex(result, title_xpath, 0, default='')
201 title: str = extract_text(title)
202 content = eval_xpath_getindex(result, './/div[contains(@class, "compText")]', 0, default='')
203 content: str = extract_text(content, allow_none=True)
204
205
206 results.append(
207 {
208 'url': url,
209
210
211 'title': " ".join(html_to_text(title).strip().split()),
212 'content': " ".join(html_to_text(content).strip().split()),
213 }
214 )
215
216 for suggestion in eval_xpath_list(dom, '//div[contains(@class, "AlsoTry")]//table//a'):
217
218 results.append({'suggestion': extract_text(suggestion)})
219
220 return results