私はこのコードをネストされたif else
のケースで書いていましたが、それを改善するための方法があれば、それはとても醜いと思います。複数のifを入れ子にしてコードを埋め込む方法はありますか?
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
)
主な懸念は、私はレスポンスからURL /リンクを抽出し、その後、分割それと最初の要素を取得したいということです。しかし、a_urlは、2つの(またはそれ以上の)要素のうちの1つにしか存在しません。 分割を直接行うことはできません。a_urlはNoneType
となる可能性があります。私はtry except else
で試してみたいが、それはさらに複雑になっているようだ。
もっと良い解決法はありますか?
https://codereview.stackexchange.com/ –