我知道如何传递1个属性,但是如何传递2?
e.g。
somerows = soup.findAll('a', target="blank")
如果我想要所有具有target =“blank”和class =“blah”的链接怎么办?
答案 0 :(得分:2)
您可以使用字典来避免某些属性名称出现问题,例如“class”:
soup.findAll('a', {
"target" : "blank",
"class" : "blah",
"href" : re.compile(...)
})
documentation中提到了这一点。
答案 1 :(得分:1)
soup.findAll('a', 'blah', target='blank', href=re.compile(...))
Quoth the BS docs:
attrs的论点很漂亮 晦涩的功能不适合一个人 东西:CSS。这对搜索非常有用 对于具有特定CSS的标记 class,但CSS的名称 attribute,class,也是一个Python 保留字。
您可以使用CSS类进行搜索 soup.find(“tagName”,{“class”: “cssClass”}),但这很多 这种常见操作的代码。 相反,您可以传递一个字符串 attrs而不是字典。该 字符串将用于限制 CSS类。
答案 2 :(得分:0)
如果您想要更复杂的搜索,您还可以执行以下操作:
key = lambda tag: ...
# or even
def key( tag )
return len( tag.attrs ) == 2 # for example
soup.findAll( key )
请参阅docs。