Не могу передать переменную внутрь метода

Этот вопрос звучит как нубский, но меня эта ситуация завела в тупик. Как передать значение внутрь метода findAll?

Пытался и так и эдак:

nrk_all = ["'article', class_='article'"]
nrk_all = "'article', class_='article'"
soup = BeautifulSoup(url.text, 'html.parser')

Не работает:

list_news = soup.findAll(nrk_all[0])
list_news = soup.findAll(nrk_all)

Работает:

list_news = soup.findAll('article', class_='article')

Ответы (3 шт):

Автор решения: Roman-Stop RU aggression in UA

Вот рабочий пример:

def f(id, class_):
    print(f'id={id} kwargs={class_}')

list = [
 (('table',), {'class_': 'table'}),
 (('id',), {'class_': 'someclass'}),
]
for args, kwargs in list:
   list_news = f(*args, **kwargs)

В вашем коде замените вызов f на soup.findAll.

Выше в примере общий случай, для произвольных параметров. Если нужно передавать только одно значение в позиционных параметрах, то можно упростить:

list = [
 ('table', {'class_': 'table'}),
 ('id', {'class_': 'someclass'}),
]
for arg, kwargs in list:
   list_news = f(arg, **kwargs)
→ Ссылка
Автор решения: Amigo9876

В общем, оно при передаче почему-то удаляло нижнее подчеркивание у class_

Поэтому список такой:

ski_nordi = [['a' ,'headlinelink'], ['div', 'nameofclass']]

А запрос такой:

for i in ski_nordi:
    list_news = soup.findAll(ski_nordi[i][0], class_=ski_nordi[i][1], limit=2)
→ Ссылка
Автор решения: gil9red

Метод find_all первым параметром принимает name:

Method signature: find_all(name, attrs, recursive, string, limit, **kwargs)

Значит, если вы хотите передавать через объекты в аргументы метода, то нужна распаковка:

nrk_all = {
    'name': 'article', 
    'class_': 'article',
}
soup = BeautifulSoup(url.text, 'html.parser')
list_news = soup.findAll(**nrk_all)

Для списка это выглядело бы так:

nrk_all_items = [
    {
        'name': 'article', 
        'class_': 'article',
    },
    {
        'name': 'article', 
        'class_': 'article',
    },
]
soup = BeautifulSoup(url.text, 'html.parser')
for nrk_all in nrk_all_items:
    list_news = soup.findAll(**nrk_all)
→ Ссылка