我尝试使用此golang package来抓取网站图片。
这是我需要抓取的html节点。
<ul class="list clearfix">
<li>
<div>
<a href=www.example.com/asda">
<img src="..sadsada./ssa/3.jpg">
</a>
</div>
</li>
<li>
<div>
<a href=www.example.comsdsds/sds">
<img srr="..sadsada./ssa/2.jpg">
</a>
</div>
</li>
<li>
<div>
<a href=www.example.com/sdds">
<img src="..sadsada./ssa/1.jpg">
</a>
</div>
</li>
.......
</ul>
如何获取图像src?
这是我试过的比赛:
matcher := func(n *html.Node) bool {
if n.DataAtom == atom.A && n.Parent != nil && n.Parent.Parent != nil && n.Parent.Parent.Parent != nil && n.Parent.Parent.Parent.Parent != nil {
return scrape.Attr(n.Parent.Parent.Parent.Parent, "class") == "list clearfix"
}
return false
}
images := scrape.FindAll(root, matcher)
但它不起作用。
答案 0 :(得分:0)
固定代码:
matcher := func(n *html.Node) bool {
if n.Data == "img" && // Is img tag
n.Parent != nil && // Parent exists
n.Parent.DataAtom == atom.A && // Parent is <a>
n.Parent.Parent != nil && // Parent's Parent exists (div)
n.Parent.Parent.Parent != nil && // Parent's Parent's Parent exists (li)
n.Parent.Parent.Parent.Parent != nil { // Parent's Parent's Parent's Parent exists (ul)
return scrape.Attr(n.Parent.Parent.Parent.Parent, "class") == "list clearfix"
}
return false
}
images := scrape.FindAll(root, matcher)
for i, img := range images {
src := scrape.Attr(img, "src")
fmt.Printf("Image %d src=%s\n", i, src)
}
我刚修改了您的matcher
功能来解决您遇到的问题。
另请注意,您问题中的HTML无效。有一些遗失"
以及误导src
属性。