Я знаю, как передать 1 атрибут, но как мне передать 2?
например,
somerows = soup.findAll('a', target="blank")
, что если я хочу, чтобы все ссылки имели target = "blank" и class ="бла"?
Вы можете использовать словарь, чтобы избежать проблем с некоторыми именами атрибутов, такими как «класс»:
soup.findAll('a', { "target" : "blank", "class" : "blah", "href" : re.compile(...) })
Это упоминается в документации .
soup.findAll('a', 'blah', target='blank', href=re.compile(...))
Quoth Документы BS :
Аргумент attrs был бы довольно неясной особенностью, если бы не одно: CSSОчень полезно искать тег, который имеет определенный класс CSS, но имя атрибута CSS, class, также является зарезервированным словом Python. Вы можете искать по классу CSS с помощью soup.find ("tagName ", {" class ":" cssClass "}), но это много кода для такой обычной операции.Вместо этого вы можете передать строку для attrs вместо словаря.Строка будет использоваться для ограничения класса CSS.
Аргумент attrs был бы довольно неясной особенностью, если бы не одно: CSSОчень полезно искать тег, который имеет определенный класс CSS, но имя атрибута CSS, class, также является зарезервированным словом Python.
Вы можете искать по классу CSS с помощью soup.find ("tagName ", {" class ":" cssClass "}), но это много кода для такой обычной операции.Вместо этого вы можете передать строку для attrs вместо словаря.Строка будет использоваться для ограничения класса CSS.
Если вы хотите более сложный поиск, вы также можете сделать:
key = lambda tag: ... # or even def key( tag ) return len( tag.attrs ) == 2 # for example soup.findAll( key )
См. документы .