2012-10-24 164 views
4
之一

是否有可能修改这个不知何故,以便它可以找到表类class1的 * *类类class2检查类是相等的两个字符串

Info = soup.find('table', {'class' :'class1'}) 
+0

我还没有真正使用过美丽的汤,但也许[这个答案](http://stackoverflow.com/a/706531/1460235)将有所帮助。你可以传入一个搜索这两个类的函数吗? –

回答

2
find_all(self, name=None, attrs={}, recursive=True, text=None, limit=None, **kwargs) 

    Extracts a list of Tag objects that match the given 
    criteria. You can specify the name of the Tag and any 
    attributes you want the Tag to have. 

    The value of a key-value pair in the 'attrs' map can be a 
    string, a list of strings, a regular expression object, or a 
    callable that takes a string and returns whether or not the 
    string matches for some custom definition of 'matches'. The 
    same is true of the tag name. 

例如:

>>> from bs4 import BeautifulSoup 
>>> text = ''.join('<table class="class{}"></table>'.format(i) for i in range(10)) 
>>> soup = BeautifulSoup(text) 
>>> 
>>> soup.find_all("table", {"class": ["class1", "class7"]}) 
[<table class="class1"></table>, <table class="class7"></table>] 
>>> import re 
>>> soup.find_all("table", {"class": re.compile("class[17]")}) 
[<table class="class1"></table>, <table class="class7"></table>] 
>>> 
>>> soup.find_all("table", {"class": lambda x: 3*int(x[-1])**2-24*int(x[-1])+17 == -4}) 
[<table class="class1"></table>, <table class="class7"></table>] 

[好吧,最后一个比赛太多了,但你的想法:任何BOOL,返回匹配功能将工作]

+0

好东西你实际上并没有在第一次尝试中获得最后的功能,或者我不得不给你+2,这是不可能的。 :) – abarnert

相关问题