As BeautifulSoup is not a standard python library, we need to install it first. We are going to install the BeautifulSoup 4 library (also known as BS4), which is the latest one.
To isolate our working environment so as not to disturb the existing setup, let us first create a virtual environment.
A virtual environment allows us to create an isolated working copy of python for a specific project without affecting the outside setup.
Best way to install any python package machine is using pip, however, if pip is not installed already (you can check it using – “pip –version” in your command or shell prompt), you can install by giving below command −
$sudo apt-get install python-pip
To install pip in windows, do the following −
Download the get-pip.py from https://bootstrap.pypa.io/get-pip.py or from the github to your computer.
Open the command prompt and navigate to the folder containing get-pip.py file.
Run the following command −
>python get-pip.py
That’s it, pip is now installed in your windows machine.
You can verify your pip installed by running below command −
>pip --version pip 19.2.3 from c:\users\yadur\appdata\local\programs\python\python37\lib\site-packages\pip (python 3.7)
Run the below command in your command prompt −
>pip install virtualenv
After running, you will see the below screenshot −
Below command will create a virtual environment (“myEnv”) in your current directory −
>virtualenv myEnv
To activate your virtual environment, run the following command −
>myEnv\Scripts\activate
In the above screenshot, you can see we have “myEnv” as prefix which tells us that we are under virtual environment “myEnv”.
To come out of virtual environment, run deactivate.
(myEnv) C:\Users\yadur>deactivate C:\Users\yadur>
As our virtual environment is ready, now let us install beautifulsoup.
As BeautifulSoup is not a standard library, we need to install it. We are going to use the BeautifulSoup 4 package (known as bs4).
To install bs4 on Debian or Ubuntu linux using system package manager, run the below command −
$sudo apt-get install python-bs4 (for python 2.x) $sudo apt-get install python3-bs4 (for python 3.x)
You can install bs4 using easy_install or pip (in case you find problem in installing using system packager).
$easy_install beautifulsoup4 $pip install beautifulsoup4
(You may need to use easy_install3 or pip3 respectively if you’re using python3)
To install beautifulsoup4 in windows is very simple, especially if you have pip already installed.
>pip install beautifulsoup4
So now beautifulsoup4 is installed in our machine. Let us talk about some problems encountered after installation.
On windows machine you might encounter, wrong version being installed error mainly through −
error: ImportError “No module named HTMLParser”, then you must be running python 2 version of the code under Python 3.
error: ImportError “No module named html.parser” error, then you must be running Python 3 version of the code under Python 2.
Best way to get out of above two situations is to re-install the BeautifulSoup again, completely removing existing installation.
If you get the SyntaxError “Invalid syntax” on the line ROOT_TAG_NAME = u’[document]’, then you need to convert the python 2 code to python 3, just by either installing the package −
$ python3 setup.py install
or by manually running python’s 2 to 3 conversion script on the bs4 directory −
$ 2to3-3.2 -w bs4
By default, Beautiful Soup supports the HTML parser included in Python’s standard library, however it also supports many external third party python parsers like lxml parser or html5lib parser.
To install lxml or html5lib parser, use the command −
$apt-get install python-lxml $apt-get insall python-html5lib
$pip install lxml $pip install html5lib
Generally, users use lxml for speed and it is recommended to use lxml or html5lib parser if you are using older version of python 2 (before 2.7.3 version) or python 3 (before 3.2.2) as python’s built-in HTML parser is not very good in handling older version.
It is time to test our Beautiful Soup package in one of the html pages (taking web page – https://www.howcodex.com/index.htm, you can choose any-other web page you want) and extract some information from it.
In the below code, we are trying to extract the title from the webpage −
from bs4 import BeautifulSoup import requests url = "https://www.howcodex.com/index.htm" req = requests.get(url) soup = BeautifulSoup(req.text, "html.parser") print(soup.title)
<title>H2O, Colab, Theano, Flutter, KNime, Mean.js, Weka, Solidity, Org.Json, AWS QuickSight, JSON.Simple, Jackson Annotations, Passay, Boon, MuleSoft, Nagios, Matplotlib, Java NIO, PyTorch, SLF4J, Parallax Scrolling, Java Cryptography</title>
One common task is to extract all the URLs within a webpage. For that we just need to add the below line of code −
for link in soup.find_all('a'): print(link.get('href'))
https://www.howcodex.com/index.htm https://www.howcodex.com/about/about_careers.htm https://www.howcodex.com/questions/index.php https://www.howcodex.com/online_dev_tools.htm https://www.howcodex.com/codingground.htm https://www.howcodex.com/current_affairs.htm https://www.howcodex.com/upsc_ias_exams.htm https://www.howcodex.com/tutor_connect/index.php https://www.howcodex.com/whiteboard.htm https://www.howcodex.com/netmeeting.php https://www.howcodex.com/index.htm https://www.howcodex.com/tutorialslibrary.htm https://www.howcodex.com/videotutorials/index.php https://store.howcodex.com https://www.howcodex.com/gate_exams_tutorials.htm https://www.howcodex.com/html_online_training/index.asp https://www.howcodex.com/css_online_training/index.asp https://www.howcodex.com/3d_animation_online_training/index.asp https://www.howcodex.com/swift_4_online_training/index.asp https://www.howcodex.com/blockchain_online_training/index.asp https://www.howcodex.com/reactjs_online_training/index.asp https://www.tutorix.com https://www.howcodex.com/videotutorials/top-courses.php https://www.howcodex.com/the_full_stack_web_development/index.asp …. …. https://www.howcodex.com/online_dev_tools.htm https://www.howcodex.com/free_web_graphics.htm https://www.howcodex.com/online_file_conversion.htm https://www.howcodex.com/netmeeting.php https://www.howcodex.com/free_online_whiteboard.htm http://www.howcodex.com https://www.facebook.com/howcodexindia https://plus.google.com/u/0/+howcodex http://www.twitter.com/howcodex http://www.linkedin.com/company/howcodex https://www.youtube.com/channel/UCVLbzhxVTiTLiVKeGV7WEBg https://www.howcodex.com/index.htm /about/about_privacy.htm#cookies /about/faq.htm /about/about_helping.htm /about/contact_us.htm
Similarly, we can extract useful information using beautifulsoup4.
Now let us understand more about “soup” in above example.