Хотите все ссылки, которые имеют 2 атрибута, как вы передаете 2 атрибута? - PullRequest
1 голос
/ 14 августа 2010

Я знаю, как передать 1 атрибут, но как мне передать 2?

например,

somerows = soup.findAll('a', target="blank")

, что если я хочу, чтобы все ссылки имели target = "blank" и class ="бла"?

Ответы [ 3 ]

2 голосов
/ 14 августа 2010

Вы можете использовать словарь, чтобы избежать проблем с некоторыми именами атрибутов, такими как «класс»:

soup.findAll('a', {
    "target" : "blank",
    "class" : "blah",
    "href" : re.compile(...)
})

Это упоминается в документации .

1 голос
/ 14 августа 2010

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.

0 голосов
/ 14 августа 2010

Если вы хотите более сложный поиск, вы также можете сделать:

key = lambda tag: ...
# or even
def key( tag )
    return len( tag.attrs ) == 2 # for example

soup.findAll( key )

См. документы .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...