Як користуватися GoSpider для веб-краулінгу
У цьому посібнику я проведу вас через налаштування GoSpider, запуск краулінгу вебсайтів і збирання потрібної вам цінної інформації. Наприкінці ви матимете все необхідне, щоб без зволікань почати краулінг вебсайтів. Почнімо!
Що таке GoSpider?
GoSpider — це інструмент командного рядка для веб-краулінгу, створений на Go (Golang). Він спроєктований так, щоб бути легким і швидким, що робить його ідеальним для простих завдань вебскрапінгу. GoSpider дає змогу швидко збирати посилання зі сайтів і переходити за ними, щоб витягувати релевантні дані. Він підходить для проєктів, де потрібно обходити кілька сторінок, наприклад інтернет-магазини чи блоги, і збирати дані на кшталт відомостей про товари, цін або іншої релевантної інформації.
Також дізнайтеся, як збирати дані з вебсайтів за допомогою Geziyor і Go.
Переваги використання GoSpider
Перш ніж перейти до посібника, розгляньмо ключові переваги використання GoSpider для вебкраулінгу:
- Швидкий і ефективний: GoSpider створено на Go, мові, відомій своєю швидкодією. Це робить GoSpider одним із найшвидших доступних інструментів для краулінгу.
- Простий у використанні: За допомогою простих команд GoSpider дає змогу виконувати краулінг вебсайтів і збирати дані з мінімальною конфігурацією.
- Customizable: Ви можете легко налаштувати глибину обходу, переходити за певними посиланнями та налаштовувати заголовки й user-agent-и, щоб імітувати трафік реального браузера.
- Працює на кількох платформах: GoSpider є кросплатформним, тобто працює на Windows, macOS і Linux.
- Open Source: GoSpider є безкоштовним і з відкритим вихідним кодом, тож ви можете робити внесок у проєкт або змінювати код за потреби.
Початок роботи з GoSpider
Перш ніж почати краулінг, потрібно налаштувати середовище та встановити GoSpider. Наведені нижче кроки проведуть вас через процес встановлення.
Крок 1: Встановіть Go
Перше, що вам потрібно зробити, - переконатися, що Go встановлено на вашому комп’ютері. Якщо у вас немає Go, ви можете завантажити його з офіційного сайту Go: https://golang.org/dl/.
Після встановлення Go ви можете перевірити, чи все встановлено правильно, відкривши термінал (Command Prompt у Windows або Terminal у macOS/Linux) і ввівши таку команду:
go version
Якщо Go встановлено правильно, ця команда виведе встановлену версію Go, наприклад:
go version go1.23.4 windows/amd64
Крок 2: Встановіть GoSpider
Після того як ви переконаєтеся, що Go встановлено, можете інсталювати GoSpider за допомогою такої команди:
GO111MODULE=on go install github.com/jaeles-project/gospider@latest
This command installs the latest version of GoSpider from GitHub. On Windows, this will place the GoSpider executable in the $GOPATH/bin directory, making it accessible from your terminal.
Після завершення встановлення ви можете перевірити, чи GoSpider встановлено правильно, ввівши таку команду:
gospider -h
Це покаже меню довідки з оглядом команд і параметрів, доступних у GoSpider.
Базовий краулінг із GoSpider
Тепер, коли GoSpider встановлено, розгляньмо простий приклад, як використовувати його для обходу вебсайту та збирання посилань.
Крок 3: Почніть краулінг
Let’s say you want to crawl a specific website, such as the homepage of an e-commerce store. You can do this by using the following GoSpider command:
gospider -q -s "https://www.example.com" -o output
Ось розбір команди:
- -q: Цей прапорець пригнічує докладний вивід, тобто показуватиме лише URL, знайдені під час краулінгу.
- -s: Цей прапорець указує URL сайту, який потрібно обходити.
- -o: Цей прапорець указує каталог виведення, куди GoSpider збереже дані краулінгу. У цьому випадку він збереже результати в каталозі виведення.
Після виконання цієї команди GoSpider почне краулінг сайту та зберігатиме посилання, які знайде, у текстові файли в папці «output». Ви маєте побачити вивід, подібний до цього:
https://www.example.com/products
https://www.example.com/contact
Крок 4: Переходьте за посиланнями за допомогою GoSpider
За замовчуванням GoSpider обходить лише вказану вами сторінку й знаходить посилання, наявні на цій сторінці. Однак вам може знадобитися переходити за посиланнями на інші сторінки сайту. Наприклад, ви можете захотіти обійти всі сторінки товарів в інтернет-магазині.
Щоб переходити за посиланнями, можна використати прапорець -d, який задає глибину рекурсії для переходу за посиланнями. За замовчуванням глибина дорівнює 1, тобто GoSpider обходитиме лише посилання на стартовій сторінці. Ви можете збільшити значення глибини, якщо хочете переходити за посиланнями на глибший рівень.
Наприклад, щоб виконати краулінг до трьох рівнів сторінок, запустіть цю команду:
gospider -q -s "https://www.example.com/products" -d 3 -o output
This will make GoSpider crawl the “products” page and follow links to up to three additional levels (e.g., product detail pages, reviews, etc.).
Крок 5: Фільтрування результатів за допомогою регулярних виразів
Іноді вам може знадобитися відфільтрувати певні типи посилань. Наприклад, вас може цікавити лише краулінг сторінок із певним шаблоном у URL, наприклад сторінок товарів, URL яких закінчуються на /product/.
GoSpider дає змогу фільтрувати посилання за допомогою регулярних виразів. Ви можете використовувати параметри `--whitelist` і `--blacklist`, щоб вказати шаблони для включення або виключення.
Наприклад, щоб обходити лише URL-адреси, які містять /product/, використайте таку команду:
gospider -q -s "https://www.example.com" - білий список "/product/" -o output
Це змусить GoSpider обходити лише ті посилання, що відповідають шаблону /product/, і ігнорувати інші сторінки.
Вилучення даних із зібраних посилань
Після того як ви виконали краулінг вебсайту та зібрали посилання, наступний крок — зібрати цінні дані з цих сторінок за допомогою вебскрапінгу. Часто потрібно витягти конкретну інформацію, наприклад назви товарів, ціни або URL зображень.
GoSpider не має вбудованої підтримки для вебскрапінгу даних із HTML-вмісту, але ви можете обробити зібрані дані за допомогою інших бібліотек Go, наприклад Colly.
Крок 6: Встановлення Colly для вебскрапінгу
Colly — це потужна й швидка бібліотека вебскрапінгу для Go, яка може витягувати структуровані дані з вебсайтів. Щоб встановити Colly, виконайте таку команду:
go get github.com/gocolly/colly/v2
Після встановлення Colly ви можете виконувати вебскрапінг даних із посилань, які зібрали за допомогою GoSpider.
Крок 7: Вилучення даних про товари за допомогою Colly
Let’s assume you want to extract product names, prices, and image URLs from a list of product pages. Here’s how you can do it.
First, create a Go file named crawler.go and import the necessary libraries:
package main
import (
"fmt"
"log"
"os"
"github.com/gocolly/colly/v2"
)
Then, define a Product struct щоб зберегти зібрані дані:
type Product struct {
Name string
Price string
ImageURL string
}
var products []Product
Now, set up Colly to visit the URLs and extract product details:
func main() {
c := colly.NewCollector()
c.OnHTML("li.product", func(e *colly.HTMLElement) {
productName := e.ChildText(".product-name")
productPrice := e.ChildText(".product-price")
imageURL := e.ChildAttr(".product-image", "src")
product := Product{
Name: productName,
Price: productPrice,
ImageURL: imageURL,
}
products = append(products, product)
fmt.Printf("Назва товару: %snЦіна товару: %snURL зображення: %sn", productName, productPrice, imageURL)
})
file, err := os.Open("pagination_links")
if err != nil {
log.Fatalf("Помилка відкриття файлу: %v", err)
}
defer file.Close()
var urls []string
// Read links from file
// …
for _, url := range urls {
err := c.Visit(url)
if err != nil {
log.Printf("Error visiting %s: %v", url, err)
}
}
}
Цей код відвідає кожне посилання та витягне назву товару, ціну й URL зображення. Далі ви можете використати дані за потреби, наприклад зберегти їх у CSV-файл.
Експорт даних у CSV
Після того як ви зібрали дані, може знадобитися зберегти їх у CSV-файл для подальшого аналізу. Go має вбудований пакет encoding/csv, що робить це простим.
Ось як можна записати зібрані дані про товари у CSV-файл:
import (
"encoding/csv"
"os"
)
func exportToCSV(filename string) {
file, err := os.Create(filename)
if err != nil {
fmt.Println("Помилка створення CSV-файлу:", err)
return
}
defer file.Close()
writer := csv.NewWriter(file)
defer writer.Flush()
writer.Write([]string{"Name", "Price", "URL зображення"})
for _, product := range products {
writer.Write([]string{product.Name, product.Price, product.ImageURL})
}
fmt.Println("Деталі товару експортовано до", filename)
}
Після завершення вебскрапінгу викличте функцію exportToCSV():
c.OnScraped(func(r *colly.Response) {
exportToCSV("product_data.csv")
})
Це створить CSV-файл із назвою товару, ціною та URL зображення для кожного товару.
Conclusion
GoSpider — чудовий інструмент для обходу сайтів і вебскрапінгу завдяки своїй простоті та швидкості. Він ідеально підходить для швидкого обходу сайтів і збирання посилань. Коли ви поєднуєте GoSpider з бібліотеками на кшталт Colly, ви легко виведете свої краулери на новий рівень, вилучаючи цінні дані.
У цьому гайді ми розглянули, як налаштувати GoSpider, краулити сайти, збирати цінні дані, а потім експортувати їх у CSV. Незалежно від того, чи працюєте ви з невеликим сайтом, чи з великим проєктом, GoSpider спрощує збирання потрібної вам інформації. Трохи практики - і ви зможете створювати потужні краулери, які заощаджуватимуть ваш час і допомагатимуть легко збирати дані з вебу.

