Я очищаю веб-страницу, которая не использует полезные классы или идентификаторы в своих тегах html, поэтому мне приходится отказаться от всех ссылок и искать шаблоны в ссылках. Вот как пример HTML может выглядетьВыполнение нескольких операторов if менее подробных
<span>Category</span><link href='example.com/link-about-a'>A</a>
На другой странице мы могли бы иметь другую категорию
<span>Category</span><link href='example.com/link-about-b'>B</a>
Использование beautifulsoup4, мое текущее решение выглядит следующим образом
def category(soup):
for x in soup.find_all('a'):
if 'link-about-a' in x['href']:
return 'A'
if 'link-about-b' in x['href']:
return 'B'
и так на .. но это очень уродливо.
Мне интересно, есть ли способ сделать это менее подробным.
Как с использованием словаря
categories = {'A': 'link-about-a', 'B': 'link-about-b'}
и сведя его к одному выражению.
Насколько предсказуемы шаблоны в ссылках? Если совпадение подстроки - единственный способ найти шаблоны, решение Эрика - это хорошо. Я лично мог бы использовать кортеж кортежей, а не dict для чего-то, что я просто повторяю как пары ключ/значение, но это тривиальное различие. Однако, если вы можете надежно извлечь шаблон с чем-то вроде регулярного выражения, то лучше всего использовать словарь, который отображает шаблоны в категории. –
@PeterDeGlopper Шаблон предсказуем и из предопределенного списка категорий (A, B, C ...), поэтому вы правы, и я нашел реализацию регулярного выражения более полезной. Благодарю. – yayu