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.
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<h1>Welcome to CSS Selector Test Page <small>by Agenty</small></h1>
<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>
<li>Text Classifer Agent</li>
<li>Change Tracking Agent</li>
<li>Document Extractor Agent</li>
<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">
<td><code>This is secret :)</code></td>
#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.
The "I live in New York" extracted form this HTML example is extracted using 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.
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
* selector scrape all the elements available on the page, and can extracts all elements.
As in the screenshot given above, Agenty extracted each item which is under the <body> tag.
The element selector scrape all elements with the specified element name.
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.
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.
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.
element > element selector
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