Check if class is equal to one of two lines

Is there any way to change this so that it can find a table with class class1 * OR * class class2 ?

Info = soup.find('table', {'class' :'class1'}) 
+4
source share
1 answer
 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. 

For instance:

 >>> 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>] 

[It’s good that the latter matches too many, but you understand: any bool return function will work.]

+2
source

Source: https://habr.com/ru/post/1441937/


All Articles