Ich schrieb diesen Code mit verschachtelten if else
Fällen, aber ich fühle, dass es so hässlich ist und frage mich, ob es irgendeinen Weg gibt, es zu verbessern (oder einen besseren Weg, dies zu erreichen).Jede Möglichkeit, Code mit mehreren zu verschachteln, wenn verschachtelt?
def do_something(self, response):
a_url = response.css('a.classA::attr(href)').extract_first()
if a_url:
a_url = a_url.split('&')[0]
else:
a_url = response.css('a.classB::attr(href)').extract_first()
if a_url:
a_url = a_url.split('&')[0]
else:
logger.error('get no url')
if a_url:
yield Request(
url=a_url,
dont_filter=True,
callback=self.do_next_thing
)
Das Hauptanliegen ist, dass ich eine URL/Link aus einer Antwort extrahieren will, und dann gespalten es und das erste Element erhalten. Aber a_url existiert nur in einem von zwei (oder mehr) Elementen. Ich kann die split nicht direkt tun, weil a_urlNoneType
sein kann. Ich möchte versuchen mit try except else
, aber das scheint noch komplizierter zu werden.
Irgendwelche besseren Lösungen?
https://codereview.stackexchange.com/ –