проблемы с noscript при очистке с использованием go-colly

#go #go-colly

#Вперед #go-colly

Вопрос:

итак, я создаю скрипт очистки с веб-сайта. когда очистка текста выполняется успешно, только когда очистка изображения завершается неудачей. Когда я проверяю элемент, код остается нормальным, но когда я запускаю источник представления, код переноса изображения изменяется на noscript. Итак, я подумал, что это так, может быть, кто-нибудь может помочь?

 c.OnHTML(".postarea", func(h *colly.HTMLElement) {
        as := Image{}
        as.Name = h.ChildText(".headpost .entry-title")
        h.ForEach(".maincontent", func(i int, x *colly.HTMLElement) {
            ya := So{}
            ya.Url = x.ChildAttr("#readerarea img", "src")
            as.Image = append(as.Image, ya)
        })
        b, err := json.MarshalIndent(as, "", " ")
        if err != nil {
            log.Println("failed to serialize response:", err)
            return
        }
        w.Header().Add("Content-Type", "application/json")
        w.Write(b)
    })
    c.OnRequest(
 

и это пример HTML-кода.

 <div id="readerarea"><noscript>
        <p><img loading="lazy"
                src="#" alt=""
                width="725" height="1024" class="alignnone size-full wp-image-72251" /><img loading="lazy"
                src="#" alt=""
                width="725" height="1024" class="alignnone size-full wp-image-72251" /><img loading="lazy"
                src="#" alt=""
                width="725" height="1024" class="alignnone size-full wp-image-72251" /><img loading="lazy"
                src="#" alt=""
                width="725" height="1024" class="alignnone size-full wp-image-72251" />
        </p>
    </noscript>
</div>
 

Ответ №1:

На странице, которая обновляет это, будет некоторый JavaScript ( <noscript> раздел предназначен для браузеров без JavaScript). Когда вы «просматриваете исходный код», вы видите необработанный HTML-код, доставленный сервером; с помощью «Проверить элемент» вы видите DOM в его нынешнем виде (т. Е. После запуска любого скрипта, который обновляет этот раздел).

Go-Colly не запускает JavaScript, поэтому вам понадобится другой подход. Варианты включают просмотр JavaScript, чтобы увидеть, как он находит изображения, или использование чего-то вроде chromedp вместо go-colly.