Как получить несколько элементов на странице с go колли - PullRequest
0 голосов
/ 09 марта 2020

У меня есть следующая структура:

Type Post struct{
     ID int64
     Title string
     Content string
}

Я скручиваю веб-страницу для получения данных с помощью Go Colly , у меня есть два метода On Html, как указано ниже:

func main() {
    c := colly.NewCollector()

    c.OnHTML("p", func(e *colly.HTMLElement) {
        Post := Post{
           Content: e.Text
        }
        db.Create(&Post)
    })
    c.OnHTML("h", func(e *colly.HTMLElement) {
        Post := Post{
           Title: e.Text
        }
        db.Create(&Post)        
    })

    c.Visit("http://go-colly.org/")
}

Приведенный выше код работает хорошо, но это создает две строки в базе данных следующим образом:

+--------------+---------------+---------------+
|      id      |     title     |    content    |
+--------------+---------------+---------------+
|       1      |      Hello    |      Null     |
+--------------+---------------+---------------+
|       2      |      Null     | Mycontent ... |
+--------------+---------------+---------------+

я хочу создать его:

+--------------+---------------+---------------+
|      id      |     title     |    content    |
+--------------+---------------+---------------+
|       1      |      Hello    | Mycontent ... |
+--------------+---------------+---------------+

как можно Я получаю два элемента и сохраняю в один ряд в go колли?

1 Ответ

1 голос
/ 09 марта 2020

Вы должны прочитать этот пример: http://go-colly.org/docs/examples/coursera_courses/ в строке, где есть detailCollector.OnHTML("div[id=rendered-content]", func(e *colly.HTMLElement) {

В примере установлено значение HTML для элемента (здесь div), который Инкапсулирует все это, поэтому вам нужно найти элемент, который инкапсулирует каждый пост, содержащий заголовок + контент, а затем выполнить e.ForEach для анализа каждого поста.

РЕДАКТИРОВАТЬ: http://go-colly.org/docs/examples/factbase/ также является хорошим примером для вашего варианта использования. Взяв тело, а затем разбирая все топи c с динамиком и текстом.

Это ясно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...