
Web Scraper
- 28 installs
- 84 repo stars
- Updated January 28, 2026
- aidotnet/moyucode
web-scraper is a Claude Code skill that extracts and parses data from web pages using Puppeteer and CSS selectors.
About
web-scraper is a Claude Code prompt skill that extracts data from web pages. It provides a Puppeteer-based TypeScript approach that navigates a page, waits for content, and parses fields with CSS selectors. A developer uses it to pull structured data from HTML pages.
- Extracts and parses data from web pages
- Uses Puppeteer with CSS-selector-based extraction
- Sets a user agent and waits for content to load
Web Scraper by the numbers
- 28 all-time installs (skills.sh)
- Ranked #1,234 of 2,715 Automation & Workflows skills by installs in the Skillselion catalog
- Data as of Jul 28, 2026 (Skillselion catalog sync)
web-scraper capabilities & compatibility
- Capabilities
- web scraping · html parsing · data extraction
- Works with
- playwright
- Use cases
- web scraping
- Pricing
- Free
What web-scraper says it does
Extract and process data from web pages with intelligent parsing capabilities.
You are a web scraping expert that extracts data efficiently and ethically.
npx skills add https://github.com/aidotnet/moyucode --skill web-scraperAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 28 |
|---|---|
| repo stars | ★ 84 |
| Last updated | January 28, 2026 |
| Repository | aidotnet/moyucode ↗ |
What it does
Extract structured data from web pages with Puppeteer and CSS selectors.
Who is it for?
Scraping structured data from HTML pages with a headless browser.
Skip if: Bulk crawling sites that prohibit scraping in their terms.
When should I use this skill?
You need to extract data fields from a web page.
What you get
Produces Puppeteer code that returns parsed data from a target page.
- Puppeteer scraping code
- parsed structured data
Files
Web Scraper Skill
Description
Extract and process data from web pages with intelligent parsing capabilities.
Trigger
/scrapecommand- User requests web data extraction
- User needs to parse HTML
Prompt
You are a web scraping expert that extracts data efficiently and ethically.
Puppeteer Scraper (TypeScript)
import puppeteer from 'puppeteer';
interface Product {
name: string;
price: number;
rating: number;
url: string;
}
async function scrapeProducts(url: string): Promise<Product[]> {
const browser = await puppeteer.launch({ headless: 'new' });
const page = await browser.newPage();
// Set user agent to avoid detection
await page.setUserAgent('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36');
await page.goto(url, { waitUntil: 'networkidle2' });
// Wait for products to load
await page.waitForSelector('.product-card');
const products = await page.evaluate(() => {
const items = document.querySelectorAll('.product-card');
return Array.from(items).map(item => ({
name: item.querySelector('.product-name')?.textContent?.trim() ?? '',
price: parseFloat(item.querySelector('.price')?.textContent?.replace('$', '') ?? '0'),
rating: parseFloat(item.querySelector('.rating')?.getAttribute('data-rating') ?? '0'),
url: item.querySelector('a')?.href ?? '',
}));
});
await browser.close();
return products;
}Cheerio Parser (Node.js)
import axios from 'axios';
import * as cheerio from 'cheerio';
async function parseArticle(url: string) {
const { data } = await axios.get(url, {
headers: { 'User-Agent': 'Mozilla/5.0' }
});
const $ = cheerio.load(data);
return {
title: $('h1.article-title').text().trim(),
author: $('span.author-name').text().trim(),
date: $('time').attr('datetime'),
content: $('article.content p').map((_, el) => $(el).text()).get().join('\n\n'),
tags: $('a.tag').map((_, el) => $(el).text()).get(),
};
}Rate Limiting
class RateLimiter {
private queue: (() => Promise<void>)[] = [];
private processing = false;
constructor(private delayMs: number = 1000) {}
async add<T>(fn: () => Promise<T>): Promise<T> {
return new Promise((resolve, reject) => {
this.queue.push(async () => {
try {
resolve(await fn());
} catch (e) {
reject(e);
}
});
this.process();
});
}
private async process() {
if (this.processing) return;
this.processing = true;
while (this.queue.length > 0) {
const fn = this.queue.shift()!;
await fn();
await new Promise(r => setTimeout(r, this.delayMs));
}
this.processing = false;
}
}
// Usage
const limiter = new RateLimiter(2000); // 2 seconds between requests
const results = await Promise.all(
urls.map(url => limiter.add(() => scrapeProducts(url)))
);Tags
web-scraping, data-extraction, parsing, automation, html
Compatibility
- Codex: ✅
- Claude Code: ✅
Related skills
FAQ
What does the web-scraper skill use?
A Puppeteer-based headless browser with CSS-selector parsing.
Does it handle dynamic content?
Yes, it waits for selectors and page network idle before extracting.