How to select elements by attribute value in XPath?

XPath allows interacting with any element's attribute such as class, id, href and any other through the @ syntax.
Attribute values then can be used in predicates using = or contains(). See these interactive examples:

Select attribute value, like the urls of <a> links:

<html> <a href="/categories/1">category</a> <a href="/product/1">product 1</a> <a href="/product/2">product 2</a> <a href="/product/3">product 3</a> </html>

Or filter element based by attribute using contains() function:

<html> <a href="/categories/1">category</a> <a href="/product/1">product 1</a> <a href="/product/2">product 2</a> <a href="/product/3">product 3</a> </html>

Provided by Scrapfly

This knowledgebase is provided by Scrapfly — a web scraping API that allows you to scrape any website without getting blocked and implements a dozens of other web scraping conveniences. Check us out 👇