johnnycrypto289/masonclawv4/web-scraper

Claude Code and agent skill by johnnycrypto289/masonclawv4

Trust tier 3
  • community
Source check pending

Checking that the SKILL.md file is still in the repository.

Install

npx vskill@latest install johnnycrypto289/masonclawv4/web-scraper

SKILL.md

Web Scraper

Extract data from any website — product prices, articles, tables, contact info, or any structured content.

Category: data, automation API Key Required: No

What It Does

Scrapes and extracts structured data from websites. Monitor prices, pull articles, grab tables, collect contact info, track changes, and export to JSON/CSV. Uses Python with requests + BeautifulSoup for simple pages, and Playwright for JavaScript-heavy sites.

Setup

bash
pip3 install requests beautifulsoup4 lxml
# For JavaScript-rendered pages:
pip3 install playwright && playwright install chromium

Agent Commands

Quick page scrape
bash
python3 -c "
import requests
from bs4 import BeautifulSoup
r = requests.get('URL_HERE', headers={'User-Agent': 'Mozilla/5.0'})
soup = BeautifulSoup(r.text, 'lxml')
# Get all text
print(soup.get_text(separator='\n', strip=True)[:3000])
"
Extract all links
bash
python3 -c "
import requests
from bs4 import BeautifulSoup
r = requests.get('URL_HERE', headers={'User-Agent': 'Mozilla/5.0'})
soup = BeautifulSoup(r.text, 'lxml')
for a in soup.find_all('a', href=True):
print(f\"{a.get_text(strip=True):50s} {a['href']}\")
" | head -30
Extract table data
bash
python3 -c "
import requests, csv, sys
from bs4 import BeautifulSoup
r = requests.get('URL_HERE', headers={'User-Agent': 'Mozilla/5.0'})
soup = BeautifulSoup(r.text, 'lxml')
table = soup.find('table')
if table:
writer = csv.writer(sys.stdout)
for row in table.find_all('tr'):
cells = [c.get_text(strip=True) for c in row.find_all(['td','th'])]
writer.writerow(cells)
else:
print('No table found')
"
Extract specific elements (CSS selectors)
bash
python3 -c "
import requests
from bs4 import BeautifulSoup
r = requests.get('URL_HERE', headers={'User-Agent': 'Mozilla/5.0'})
soup = BeautifulSoup(r.text, 'lxml')
for el in soup.select('CSS_SELECTOR_HERE'):
print(el.get_text(strip=True))
"
Monitor price changes
bash
python3 -c "
import requests, json, os
from bs4 import BeautifulSoup
url = 'PRODUCT_URL'
r = requests.get(url, headers={'User-Agent': 'Mozilla/5.0'})
soup = BeautifulSoup(r.text, 'lxml')
# Adjust selector for the site
price_el = soup.select_one('.price, .product-price, [data-price]')
price = price_el.get_text(strip=True) if price_el else 'Not found'
print(f'Current price: {price}')
# Save to history
history_file = '/tmp/price_history.json'
history = json.load(open(history_file)) if os.path.exists(history_file) else []
from datetime import datetime
history.append({'date': datetime.now().isoformat(), 'price': price, 'url': url})
json.dump(history, open(history_file, 'w'), indent=2)
print(f'History: {len(history)} entries saved')
"
Scrape JavaScript-rendered pages (Playwright)
bash
python3 -c "
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(headless=True)
page = browser.new_page()
page.goto('URL_HERE')
page.wait_for_load_state('networkidle')
content = page.content()
from bs4 import BeautifulSoup
soup = BeautifulSoup(content, 'lxml')
print(soup.get_text(separator='\n', strip=True)[:3000])
browser.close()
"
Extract all images
bash
python3 -c "
import requests
from bs4 import BeautifulSoup
from urllib.parse import urljoin
r = requests.get('URL_HERE', headers={'User-Agent': 'Mozilla/5.0'})
soup = BeautifulSoup(r.text, 'lxml')
for img in soup.find_all('img', src=True):
url = urljoin('URL_HERE', img['src'])
alt = img.get('alt','')
print(f\"{alt:40s} {url}\")
"
Export to JSON
bash
python3 -c "
import requests, json
from bs4 import BeautifulSoup
r = requests.get('URL_HERE', headers={'User-Agent': 'Mozilla/5.0'})
soup = BeautifulSoup(r.text, 'lxml')
items = []
for el in soup.select('CSS_SELECTOR'):
items.append({
'title': el.select_one('.title').get_text(strip=True) if el.select_one('.title') else '',
'link': el.select_one('a')['href'] if el.select_one('a') else '',
})
print(json.dumps(items, indent=2))
"

Examples

User: "Get me the prices from this page" → Scrape the page, extract price elements, present as a list

User: "Monitor this product price daily" → Create a scrape script + cron job, alert on price drops

User: "Extract the table from this Wikipedia page" → Scrape table, format as CSV or readable text

User: "What articles are on this news site's front page?" → Extract headlines and links

Constraints

  • Respect robots.txt and rate limits — don't hammer sites
  • Some sites block scrapers — rotate User-Agent if needed
  • JavaScript-heavy sites (SPAs) need Playwright, not just requests
  • Data may change between scrapes — timestamps everything
  • Commercial scraping may have legal implications depending on jurisdiction
  • Always confirm before scraping at scale (>100 requests)

Security

  • Security scanPassed, 90 of 100Pattern checks on the skill's files.
  • Model reviewPassed

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

7-day trend score
0

Not refreshed yet.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/johnnycrypto289/masonclawv4/web-scraper/badge)](https://verified-skill.com/skills/johnnycrypto289/masonclawv4/web-scraper)

Something wrong with this skill or its page? Tell us.