π Get WebScraperPortable running in minutes!
Copy the entire WebScraperPortable folder into your project:
cp -r WebScraperPortable /path/to/your/project/Minimum requirements for basic web scraping:
pip install requests beautifulsoup4 pandas openpyxlcd /path/to/your/project
python -m WebScraperPortable --url "https://httpbin.org/html" --output "./test_results"If this works, you're ready to go! π
For topic filtering and intelligent link following:
- Install Ollama: https://ollama.ai/download
- Start Ollama server:
ollama serve - Pull embedding model:
ollama pull mxbai-embed-large - Install Python packages:
pip install ollama numpy
Test semantic features:
python -m WebScraperPortable --url "https://example.com" --topic "technology" --depth 2For progress bars and pretty formatting:
pip install richFor PDF and Word document support:
pip install PyMuPDF python-docxpython -m WebScraperPortable --featuresThis will show you which features are available:
π WebScraperPortable Feature Status:
Core Web Scraping β
Available (β
Always Available)
Semantic Analysis β Missing (Ollama + NumPy)
Rich Terminal Output β
Available (Rich)
Document Parsing β
Available (python-docx + PyMuPDF)
π‘ Install semantic features: pip install ollama numpy
# test_installation.py
from WebScraperPortable import scrape_url, WebScraperAPI
# Test basic functionality
result = scrape_url("https://httpbin.org/html", output_dir="./test_output")
print(f"β
Test successful! Results in: {result['output_directory']}")
# Test API
api = WebScraperAPI()
api.print_features()# Basic scraping
python -m WebScraperPortable --url "https://example.com" --output "./results"
# Multiple URLs
python -m WebScraperPortable --url "https://site1.com" --url "https://site2.com"
# With topic filtering (requires semantic features)
python -m WebScraperPortable --url "https://news.ycombinator.com" --topic "artificial intelligence"
# Quiet mode for scripts
python -m WebScraperPortable --url "https://example.com" --json-output --quietfrom WebScraperPortable import scrape_url, scrape_multiple, WebScraperAPI
# Simple URL scraping
result = scrape_url("https://example.com", output_dir="./my_results")
# Multiple URLs with options
result = scrape_multiple(
["https://site1.com", "https://site2.com"],
output_dir="./results",
depth=2,
topic="programming"
)
# Advanced API usage
api = WebScraperAPI(max_workers=10)
result = api.scrape(
sources=["https://example.com"],
depth=3,
topic="machine learning",
topic_threshold=0.7
)import subprocess
import json
result = subprocess.run([
"python", "-m", "WebScraperPortable",
"--url", "https://example.com",
"--output", "./scrape_results",
"--json-output", "--quiet"
], capture_output=True, text=True)
if result.returncode == 0:
data = json.loads(result.stdout)
print(f"Scraping successful: {data['output_directory']}")
else:
print(f"Error: {result.stderr}")from flask import Flask, request, jsonify
from WebScraperPortable import scrape_url
app = Flask(__name__)
@app.route('/scrape', methods=['POST'])
def scrape_endpoint():
url = request.json.get('url')
topic = request.json.get('topic')
result = scrape_url(
url,
output_dir=f"./scrapes/{session_id}",
topic=topic
)
return jsonify(result)# Install in notebook
!pip install requests beautifulsoup4 pandas openpyxl
# Use in cell
from WebScraperPortable import scrape_url
import pandas as pd
result = scrape_url("https://example.com")
df = pd.read_excel(result['spreadsheet_path'])
df.head()# Optional: Set Ollama host
export OLLAMA_HOST=http://localhost:11434
# Optional: Set default output directory
export WEBSCRAPER_OUTPUT_DIR=./default_scrapesfrom WebScraperPortable import WebScraperAPI
# Custom configuration
api = WebScraperAPI(
max_workers=20, # More threads for faster processing
enable_semantic=True, # Enable AI features
user_agent="MyBot/1.0", # Custom user agent
ollama_host="http://custom-ollama:11434" # Custom Ollama server
)"Missing core dependency"
pip install requests beautifulsoup4 pandas openpyxl"Semantic analysis not available"
# Install Ollama from https://ollama.ai
ollama serve
ollama pull mxbai-embed-large
pip install ollama numpy"Permission denied" on output directory
mkdir -p ./scrape_results
chmod 755 ./scrape_results"Rich terminal output not available"
pip install rich
# OR: use without rich (basic functionality still works)import logging
logging.basicConfig(level=logging.DEBUG)
from WebScraperPortable import scrape_url
result = scrape_url("https://example.com", output_dir="./debug_output")from WebScraperPortable import WebScraperAPI
api = WebScraperAPI()
features = api.get_feature_status()
if features['semantic_analysis']:
print("β
AI features available")
else:
print("β AI features not available - install ollama and numpy")FROM python:3.9-slim
# Install core dependencies
RUN pip install requests beautifulsoup4 pandas openpyxl
# Copy WebScraperPortable module
COPY WebScraperPortable /app/WebScraperPortable
WORKDIR /app
# Run scraper
CMD ["python", "-m", "WebScraperPortable", "--url", "https://example.com"]# lambda_function.py
import json
from WebScraperPortable import scrape_url
def lambda_handler(event, context):
url = event.get('url')
result = scrape_url(url, output_dir='/tmp/scrape_results')
return {
'statusCode': 200,
'body': json.dumps(result)
}- Start with basic scraping to verify everything works
- Add semantic features if you need AI-powered filtering
- Integrate into your application using the Python API
- Scale up with more threads and advanced options
- Monitor performance and adjust configurations as needed
- README.md - Complete feature documentation
- API Reference - Detailed method documentation
- Main project - Web-Scraper repository for latest updates
You're all set! π Happy scraping with WebScraperPortable!