Beautiful Soup - find() Method
Method Description
The find() method in Beautiful Soup looks for the first Element that matches the given criteria in the children of this PageElement and returns it.
Syntax
Soup.find(name, attrs, recursive, string, **kwargs)
Parameters
name − A filter on tag name.
attrs − A dictionary of filters on attribute values.
recursive − If this is True, find() a recursive search will be performed. Otherwise, only the direct children will be considered.
limit − Stop looking after specified number of occurrences have been found.
kwargs − A dictionary of filters on attribute values.
Return value
The find() method returns Tag object or a NavigableString object
Example - Finding an Element by an ID
The following Python code finds the element with its id as nm
from bs4 import BeautifulSoup
html = """
<html>
<head>
<title>TutorialsPoint</title>
</head>
<body>
<form>
<input type = 'text' id = 'nm' name = 'name'>
<input type = 'text' id = 'age' name = 'age'>
<input type = 'text' id = 'marks' name = 'marks'>
</form>
</body>
</html>
"""
soup = BeautifulSoup(html, 'html.parser')
obj = soup.find(id = 'nm')
print (obj)
Output
<input id="nm" name="name" type="text"/>
Example - Finding First Tag matching given attribute
The find() method returns the first tag in the parsed document that has the given attributes.
from bs4 import BeautifulSoup
html = """
<html>
<head>
<title>TutorialsPoint</title>
</head>
<body>
<form>
<input type = 'text' id = 'nm' name = 'name'>
<input type = 'text' id = 'age' name = 'age'>
<input type = 'text' id = 'marks' name = 'marks'>
</form>
</body>
</html>
"""
soup = BeautifulSoup(html, 'html.parser')
obj = soup.find(attrs={"name":'marks'})
print (obj)
Output
<input id="marks" name="marks" type="text"/>
Example - Case of no match
If find() can't find anything, it returns None
from bs4 import BeautifulSoup
html = """
<html>
<head>
<title>TutorialsPoint</title>
</head>
<body>
<form>
<input type = 'text' id = 'nm' name = 'name'>
<input type = 'text' id = 'age' name = 'age'>
<input type = 'text' id = 'marks' name = 'marks'>
</form>
</body>
</html>
"""
soup = BeautifulSoup(html, 'html.parser')
obj = soup.find('dummy')
print (obj)
Output
None
Advertisements