使用go-colly scraper解析嵌套元素

9lowa7mx  于 2023-01-06  发布在  Go
关注(0)|答案(1)|浏览(123)

我正在使用go-colly从网页中抓取数据:

我无法从这个嵌套的HTML元素中解析出src图像。

c.OnHTML(".result-row", func(e *colly.HTMLElement) {
        qoquerySelection := e.DOM
        fmt.Println(qoquerySelection.Find("img").Attr("src"))
...

这个.result-row适用于很多情况,例如:

link := e.ChildAttrs("a", "href")

以及

e.ChildText(".result-price")

如何获得嵌套图像src的值?

wfypjpf4

wfypjpf41#

如果我理解正确的话,我的解决方案应该能够满足您的需求。首先,让我展示代码:

package main

import (
    "fmt"
    "strings"

    "github.com/gocolly/colly/v2"
)

func main() {
    c := colly.NewCollector(colly.AllowedDomains(
        "santabarbara.craigslist.org",
    ))

    c.OnRequest(func(r *colly.Request) {
        r.Headers.Set("User-Agent", "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36")
    })

    c.OnResponse(func(r *colly.Response) {
        fmt.Println("Response Code:", r.StatusCode)
    })

    c.OnHTML("img", func(h *colly.HTMLElement) {
        imgSrc := h.Attr("src")
        imgSrc = strings.Replace(imgSrc, "50x50c", "1200x900", 1)
        imgSrc = strings.Replace(imgSrc, "300x300", "1200x900", 1)
        imgSrc = strings.Replace(imgSrc, "600x450", "1200x900", 1)
        fmt.Println(imgSrc)
    })

    c.Visit("https://santabarbara.craigslist.org/apa/7570100710.html")
}

在选择了网页上的所有图片之后,你必须用最大的图标格式替换图标(在我们的例子中是1200x900),我在页面底部的script标签中看到了这些格式。
剩下的应该很简单。如果这解决了你的问题或者你需要其他的东西,请告诉我,谢谢!

相关问题