Selectors Guide

Crawlingo supports four selector engines: CSS, XPath, Regex, and SIMD-accelerated Text Anchors.

6 min read Updated July 2026

CSS Selectors

css_syntax.py
python
1page.css("h1") # Tag name
2page.css(".product-title") # Class
3page.css("#main-content") # ID
4page.css("[data-id]") # Attribute presence
5page.css("[href^=https]") # Attribute starts-with
6page.css("div > p") # Direct child
7page.css("div p") # Descendant
8page.css("h1, h2, h3") # Multiple selectors
9page.css("ul li:first-child") # Pseudo-class
10page.css(":not(.hidden)") # Negation

XPath Selectors

xpath_syntax.py
python
1page.xpath("//h1") # All h1 elements
2page.xpath("//div[@class='price']") # Attribute filter
3page.xpath("//a/@href") # Attribute extraction
4page.xpath("//p[position()<3]") # Positional
5page.xpath("//div[contains(@class,'active')]") # Contains substring
6page.xpath("//table/tbody/tr[1]/td[2]") # Table cell navigation

Regex Selectors

regex_syntax.py
python
1page.regex(r'\b[A-Z][a-z]+ [A-Z][a-z]+\b') # Proper names
2page.regex(r'[\w.+-]+@[\w-]+\.[\w.]+') # Emails
3page.regex(r'\+\d{1,3}\s?\(?\d{3}\)?\s?\d{3}[-.]?\d{4}') # Phones

Text Anchor Selectors (SIMD-Accelerated)

text_anchor_syntax.py
python
1# Find by text content
2page.find_text("Buy Now") # Case-sensitive
3page.find_text("add to cart", case_sensitive=False)
4
5# Text boundaries
6page.after_text("Price:") # Element immediately following text
7page.before_text(" - Product Details") # Element preceding text

Performance Characteristics

Selector EngineSpeedFlexibilityBest Use Case
CSSFastestModerateStandard HTML structures
XPathFastHighestComplex hierarchy & text node traversals
RegexModerateHighExtracting unstructured text patterns
Text AnchorFastest (SIMD)ModerateDynamic classes with static label text