Salman Adnan

custom-web-scraper

Web Element Inspector

Pulling every link, or every heading, off a web page normally means writing a program for that one page. This desktop tool makes it point-and-click: type an address, pick how to search, and it drives a real Chrome browser to find every match and outline it on the page. A live scrape against a real site is not demonstrated: the sandbox it was checked in had no internet.

Solo

Solo work by Salman Adnan.

DOM Constellation: a web page drawn as a tree, which is how a browser actually stores one, with headings and links as branches. A searchlight sweeps the tree and every element matching your search lights up, which is what the tool does on a real page. Live and interactive: drag it to orbit, scroll or pinch to zoom. Open full screen
The real Web Element Inspector desktop tool, showing its main window.
Live screenshot of the actual Tkinter app.
7Selenium locator strategies supported
7/7formatting-layer unit tests passing
Not verifiedlive Chrome scrape (sandbox has no network)

Overview

A desktop GUI for pulling elements off a live web page without writing a scraping script for each new site. Type a URL, pick one of seven Selenium locator strategies, and the tool drives a real Chrome browser to find every matching element, landing results in a sortable table with a "Highlight in Browser" button to confirm the match visually.

Key features

  • Loads any URL into a real Chrome browser window from inside the GUI.
  • Looks up elements by seven Selenium locator strategies: class name, ID, name, tag name, link text, partial link text, and XPath.
  • Results open in a separate scrollable table (ttk.Treeview) showing tag name, visible text, and a summary of key attributes per matched element.
  • A status bar reports every step ("Loading page...", "Found N elements", or a specific error), colored by severity.
  • Session history: the URL and locator fields remember up to 10 recent entries each.
  • "Highlight in Browser" outlines every matched element in the live Chrome window and scrolls it into view.

Verification

This is a GUI that drives a real browser, so a full end-to-end run needs a display and a live target site. What was actually checked: main.py compiles cleanly; the pure result-formatting functions (summarize_element, build_result_rows) pass all 7 cases in a standalone unit test suite against fake duck-typed elements, covering truncation, whitespace collapsing, missing attributes, and a simulated stale-element exception; and the full Tkinter window, including the history comboboxes and the status bar, constructs and runs against a fake driver on a live X display. A live Chrome session against a real site was not exercised here, since this sandbox has no outbound network access for Selenium Manager to fetch a chromedriver; the Selenium calls used are standard 4.x API and match documented usage.

Tech stack

  • Python 3.9+
  • tkinter
  • Selenium 4.x
  • ttk.Treeview

Book a call

Let's talk about what you're building.

Pick a slot below.