У меня есть 3 оператора if, и они действительно уродливы с точки зрения стиля и эффективности.
Они анализируют HTML с BS4. HTML в переменной example_post. Если элемент существует -> получить текст. Если не существует -> назначить «Нет» в качестве строки.
if example_post.find('span', class_='tag1'):
post_reactions = example_post.find('span', class_='tag1').getText()
else:
post_reactions = 'None'
if example_post.find('span', class_='tag2'):
post_comments = example_post.find('span', class_='tag2').getText()
else:
post_comments = 'None'
if example_post.find('span', class_='tag3'):
post_shares = example_post.find('span', class_= 'tag3').getText()
else:
post_shares = 'None'
Я начал гуглить, как его улучшить, и обнаружил, что можно использовать словари с заявления
таким образом, дикт попробовал вот так
post_titles = []
post_values = []
for key,value in post_reactions_dict.items():
if example_post.find('span', class_=key):
post_values.append(example_post.find('span', class_=key).getText())
post_titles.append(key)
else:
post_titles.append(key)
post_values.append('None')
Это нормально, но, возможно, можно сделать это еще лучше?
Идеальный результат:
post_titles = ['post_reactions', 'post_comments', 'post_shares']
post_values (it depends) but for the question ['None', 'None', 'None']