GoSpider для веб-краулинга

Как использовать GoSpider для веб-краулинга

В этом руководстве я покажу, как настроить GoSpider, как начать краулинг сайтов и как извлекать нужную ценную информацию. К концу у вас будет все необходимое, чтобы быстро начать веб-краулинг. Поехали!

Что такое GoSpider?

GoSpider — это командный инструмент для веб-краулинга, созданный на Go (Golang). Он разработан как легкий и быстрый, что делает его идеальным для простых задач веб-скрейпинга. GoSpider позволяет быстро собирать ссылки с сайтов и переходить по ним, чтобы извлекать нужные данные. Он подходит для проектов, где нужно обходить множество страниц, например интернет-магазины или блоги, и собирать такие данные, как сведения о товарах, цены и другую релевантную информацию.

Также прочитайте, как Сбор данных с сайтов с помощью Geziyor и Go.

Преимущества использования GoSpider

Прежде чем переходить к руководству, давайте рассмотрим ключевые преимущества использования GoSpider для веб-краулинга:

  1. Быстро и эффективноGoSpider написан на Go, языке, известном своей производительностью. Это делает GoSpider одним из самых быстрых доступных инструментов для краулинга.
  2. Прост в использовании: С помощью простых команд GoSpider позволяет обходить сайты и извлекать данные с минимальной настройкой.
  3. CustomizableВы можете легко настраивать глубину краулинга, переходить только по определенным ссылкам и изменять заголовки и user agent, чтобы имитировать трафик реального браузера.
  4. Работает на нескольких платформах: GoSpider кроссплатформенен, то есть работает на Windows, macOS и Linux.
  5. Open SourceGoSpider — бесплатный и open-source проект, поэтому вы можете вносить вклад или изменять код по мере необходимости.

Начало работы с 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

Эта команда устанавливает последнюю версию GoSpider из GitHub. В Windows исполняемый файл GoSpider будет помещён в каталог $GOPATH/bin, где его можно будет запускать из терминала.

После завершения установки вы можете проверить, что 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 сохранит данные, полученные при обходе. В данном случае результаты будут сохранены в папке output.

После выполнения этой команды GoSpider начнет обход сайта и сохранит найденные сс��лки в текстовые файлы в папке «output». Должен появиться вывод, похожий на следующий:

https://www.example.com

https://www.example.com/about

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" - whitelist "/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 главная
импорт (
"fmt"
"log"
"os"
"github.com/gocolly/colly/v2"
) Затем определите 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 главная() {
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("Product Name: %snProduct Price: %snImage URL: %sn", productName, productPrice, imageURL)
})
file, err := os.Open("pagination_links")
если err != nil {
log.Fatalf("Ошибка при открытии файла: %v", err)
}
defer file.Close()
var urls []string
// Read links from file
// …
для _, url := ассортимент urls {
err := c.Visit(url)
если err != nil {
log.Printf("Error visiting %s: %v", url, err)
}
}
}

Этот код обойдет каждую ссылку и извлечет название товара, цену и URL изображения. Затем вы сможете использовать эти данные по своему усмотрению, например, записать их в CSV-файл.

Экспорт данных в CSV

После того как вы соберете данные, их можно сохранить в CSV-файл для последующего анализа. Go предоставляет встроенный пакет encoding/csv, который упрощает эту задачу.

��от как можно записать извлеченные данные о товарах в CSV-файл:

импорт (
"encoding/csv"
"os"
)
func exportToCSV(filename string) {
file, err := os.Create(filename)
если err != nil {
fmt.Println("Error creating CSV file:", err)
возврат
}
defer file.Close()
writer := csv.NewWriter(file)
defer writer.Flush()
writer.Write([]string{"Name", "Price", "URL изображения"})
для _, product := ассортимент products {
writer.Write([]string{product.Name, product.Price, product.ImageURL})
}
fmt.Println("Product details exported to", filename)
}

После завершения скрейпинга вызовите функцию exportToCSV():

c.OnScraped(func(r *colly.Response) {
exportToCSV("product_data.csv")
})

Это создаст CSV-файл с названием товара, ценой и URL изображения для каждого товара.

Заключение

GoSpider — отличный инструмент для обхода сайтов и скрейпинга благодаря своей простоте и скорости. Он идеально подходит для быстрого обхода сайтов и сбора ссылок. Если сочетать GoSpider с библиотеками вроде Colly, можно легко вывести свои краулеры на новый уровень, извлекая ценные данные.

В этом руководстве мы рассмотрели, как настроить GoSpider, выполнить обход сайтов, извлечь полезные данные, а затем экспортировать их в CSV. Независимо от того, работаете ли вы с небольшим сайтом или крупным проектом, GoSpider упрощает сбор нужной информации. С практикой вы сможете создавать мощные краулеры, которые экономят время и помогают без труда собирать данные из веб-ресурсов.

Похожие записи