”;
In an HTML document, usually each element is assigned a unique ID. This enables the value of an element to be extracted by a front-end code such as JavaScript function.
With BeautifulSoup, you can find the contents of a given element by its ID. There are two methods by which this can be achieved – find() as well as find_all(), and select()
Using find() method
The find() method of BeautifulSoup object searches for first element that satisfies the given criteria as an argument.
Let us use the following HTML script (as index.html) for the purpose
<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>
The following Python code finds the element with its id as nm
Example
from bs4 import BeautifulSoup fp = open("index.html") soup = BeautifulSoup(fp, ''html.parser'') obj = soup.find(id = ''nm'') print (obj)
Output
<input id="nm" name="name" type="text"/>
Using find_all()
The find_all() method also accepts a filter argument. It returns a list of all the elements with the given id. In a certain HTML document, usually a single element with a particular id. Hence, using find() instead of find_all() is preferrable to search for a given id.
Example
from bs4 import BeautifulSoup fp = open("index.html") soup = BeautifulSoup(fp, ''html.parser'') obj = soup.find_all(id = ''nm'') print (obj)
Output
[<input id="nm" name="name" type="text"/>]
Note that the find_all() method returns a list. The find_all() method also has a limit parameter. Setting limit=1 to find_all() is equivalent to find()
obj = soup.find_all(id = ''nm'', limit=1)
Using select() method
The select() method in BeautifulSoup class accepts CSS selector as an argument. The # symbol is the CSS selector for id. It followed by the value of required id is passed to select() method. It works as the find_all() method.
Example
from bs4 import BeautifulSoup fp = open("index.html") soup = BeautifulSoup(fp, ''html.parser'') obj = soup.select("#nm") print (obj)
Output
[<input id="nm" name="name" type="text"/>]
Using select_one()
Like the find_all() method, the select() method also returns a list. There is also a select_one() method to return the first tag of the given argument.
Example
from bs4 import BeautifulSoup fp = open("index.html") soup = BeautifulSoup(fp, ''html.parser'') obj = soup.select_one("#nm") print (obj)
Output
<input id="nm" name="name" type="text"/>
”;