Scraping Data using CSS Selectors

CSS selectors are used to extract the content you want from a HTML pages, using Agenty scraping agents. Selectors are the part of CSS rule set and select HTML elements according to its id, class, type, attribute or pseudo-classes. The CSS selectors are easy to understand and quick to learn, you can use our chrome extension to generate CSS selectors automatically or can type manually to test the selectors and the result in preview.

In this tutorial we will learn some basic CSS selectors and how to write them to extract the data from HTML pages :

We are going to using this HTML page with HTML source below. The page is hosted on github and open source to try our CSS selectors for web scraping agent.

https://agenty.github.io/CSS-Selectors/


<!DOCTYPE html>
<html>

<head>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
</head>

<body>
    <div class="container">
        <h1>Welcome to CSS Selector Test Page <small>by Agenty</small></h1>

        <div class="introduction">

            <p>My name is Scraping <span id="surName">Agent.</span></p>

            <p id="myAddress">I live in New York</p>

            <p>I have many partners:</p>

        </div>

        <ul id="listofPartners">
            <li>Text Classifer Agent</li>
            <li>Change Tracking Agent</li>
            <li>Document Extractor Agent</li>
            <li>OCR Agent</li>
        </ul>

        <p>All my partners are great!
            <br> But I really like Text classifer agent!</p>

        <p lang="fr" title="Hello">Bonjour</p>

        <h3>I have 4 pricing plans</h3>
        <p><b>I love each of them:</b></p>

        <table class="table table-bordered">
            <tr>
                <th>Name</th>
                <th>Price</th>
            </tr>
            <tr>
                <td>Starter</td>
                <td>$29</td>
            </tr>
            <tr>
                <td>Basic</td>
                <td>$49</td>
            </tr>
            <tr>
                <td>Professional</td>
                <td>$99</td>
            </tr>
            <tr>
                <td>Enterprise</td>
                <td><code>This is secret :)</code></td>
            </tr>
        </table>
    </div>
</body>
</html>

#id selector

The #id selector uses the id attribute of an HTML element to scrape a specific element. The id of an element is a unique identifier of particular HTML tag, so the id selector is used to select one unique element or all elements under the id.

To extract an element with a specific id write a hash (#) character followed by the id of the element in selector field. The difference between an id and a class is that an id can be used to identify one element whereas a class can be used to identify many elements.

Example:

web scraping using id selector

The "I live in New York" extracted form this HTML example is extracted using the #myAddress selector.

.class selector

The class selector scrape all the elements with a specific class attribute. A class to search for an element can have multiple classes. Only one of them must match and to select elements with a specific class write a period (.) character followed by the name of the class.

Example:

web scraping using class selector

As in above screenshot, Agenty scraped each matching element using .introduction in this HTML example. So we can use the class selectors to scrape data from HTML pages using .class selector.

* selector

The * selector scrape all the elements available on the page, and can extracts all elements.

Example:

web scraping using all element selector

As in the screenshot given above, Agenty extracted each item which is under the <body> tag.

 

element selector

The element selector scrape all elements with the specified element name.

The td element defines standard cells in a HTML table. Here we can see the data of the table extracted using the td element selector. So, we can use the name of element to extract any data from all the element of that type.

Example:

web scraping using element selector

As given in the above example, Agenty scraped all 8 td elements items containing from the table.

 

element, element selector

The element, element selector are used to scrape all elements that are placed immediately after (not inside) the first specified element.

You can specify any number of selectors to combine into a single result. This multiple expression combination is an efficient way to scrape multiple data-points into the single field. For example, using the th, td  selector will scrape the text for both elements - table header and table rows.

We can add any number of elements(or selector) separated by commas to scrape multiple data points.

Example:

web scraping using multiple selector

 

element element selector

The element element selector are used to extract elements inside elements.

When we are extracting the data, which is present in a particular parent tag. We can write our selector using the parent tag to extract only the element having the parent name provided. For example, If I want to extract the 3 paragraphs under the div tag with introduction class. I can use the .introduction p selector which will match only the p which has the parent as .introduction and not any others.

Example:

parent child selector for scraping websites

 

 

element > element selector

The element > element selector are used to scrape elements with a specific parent. But elements that are not directly a child of the specified parent, are not scraped.

This selector is used to extract content with direct Parent > Child relationship. For example, using table > tbody > tr > th tells Agenty, that extracts all elements where the parent is a table > tbody > tr elements

Example:

web scraping using parent element