#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.