n8n-nodes-free-web-scrapping
Version:
Node n8n for searching and extracting content from web pages via DuckDuckGo and free scraping.
160 lines (122 loc) • 4.18 kB
Markdown
Web Scraper (Free)
A **no-API-key**, DuckDuckGo-based search & scraping node for **n8n**.
Perform searches and extract page content—all without paying for an API or maintaining credentials.
---
## 🚀 Features
1. **Search URLs only**
Perform a DuckDuckGo search and return the top N result URLs.
2. **Extract single page**
Fetch any web page and return its title, H1 headers, and paragraphs.
3. **Filter page content**
Fetch a page and return only the parts you care about:
- Headings (H1, H2, H3)
- Paragraphs
- Bold text
- **All** of the above
4. **Query + Full Scrape**
Combines “Search URLs only” and “Extract single page”:
- Search DuckDuckGo for a query
- Fetch and parse each resulting URL
5. **Browser-like HTTP requests**
- Custom **User-Agent** header
- Configurable **timeout** to prevent hanging workflows
6. **Built-in blacklist**
Automatically skips links from social, video, and other noise domains (e.g. YouTube, Facebook, Instagram, TikTok, Reddit, etc.).
7. **Zero dependencies**
No external APIs or credentials required—just install once and start scraping.
---
## 📦 Installation
1. In your n8n instance, open **Settings → Community Nodes → Install**
2. In **npm Package Name** enter:
```
n8n-nodes-free-web-scrapping
````
3. Click **Install** and restart n8n if prompted.
---
## 🔧 Configuration
When you add the **Web Scraper (Free)** node, you’ll see:
### 1. Operation
| Value | Description |
|-----------------|-------------------------------------------------------|
| `searchUrls` | DuckDuckGo search → return URLs only |
| `extractPage` | Fetch a single page → extract headers & paragraphs |
| `filterContent` | Fetch a single page → return only filtered content |
| `fullScrape` | DuckDuckGo search → fetch & extract content of URLs |
### 2. Parameters by Operation
#### **Search URLs only** & **Full Scrape**
- **Search Query** (string)
Text to search for on DuckDuckGo.
- **Maximum URLs** (number)
How many top links to process (1–20).
#### **Extract single page** & **Filter page content**
- **Page URL** (string)
The URL of the page you want to scrape.
#### **Filter page content** only
- **Filter Type** (options)
- `headings` → H1, H2, H3
- `paragraphs` → `<p>` elements
- `bolds` → `<b>` and `<strong>`
- `all` → combinations of the above
---
## 📖 Examples
### 1. Search URLs only
```json
[
{ "url": "https://openai.com/gpt-4" },
{ "url": "https://en.wikipedia.org/wiki/GPT-4" }
]
````
### 2. Extract single page
```json
[
{
"url": "https://en.wikipedia.org/wiki/Web_scraping",
"title": "Web scraping - Wikipedia",
"h1": ["Web scraping"],
"paragraphs": [
"Web scraping, web harvesting, or web data extraction is data scraping used for extracting data from websites..."
]
}
]
```
### 3. Filter page content
```json
[
{
"url": "https://example.com",
"filterType": "headings",
"data": {
"h1": ["Main Heading"],
"h2": ["Section Title", "Another Section"],
"h3": ["Subsection"]
}
}
]
```
### 4. Query + Full Scrape
```json
[
{
"url": "https://example.com/page1",
"title": "Example Page",
"h1": ["Example Heading"],
"paragraphs": ["First paragraph...", "Second paragraph..."]
}
]
```
---
## 🔍 Blacklist
```
youtube.com, instagram.com, facebook.com, twitter.com,
tiktok.com, snapchat.com, linkedin.com, pinterest.com,
reddit.com, twitch.tv, vimeo.com, dailymotion.com,
bilibili.com, youku.com
```
---
## ⚙️ Under the Hood
* Uses **got** for HTTP requests.
* Parses DuckDuckGo’s HTML endpoint:
`https://html.duckduckgo.com/html?q=<query>`
* Extracts links via regex on the `result__a` class.
* Cleans HTML with regex-based strip functions (scripts, styles, comments, tags).
* All operations **return JSON**—ready for downstream nodes.