XBlog开发手册 XBlog开发手册
  • 快速入门
  • API参考
  • 快速入门
  • API参考
GitHub (opens new window)
  • 快速入门
  • API参考
  • 快速入门
  • API参考
GitHub (opens new window)
  • 快速入门

    • 简介
    • 路由
    • 数据库
    • 网络
    • 爬虫
      • 初始化
      • 开始爬取
    • 定时任务
    • 文件读取
    • 邮件
    • 工具包
    • 界面
  • API参考

  • 插件开发
  • 快速入门
小游
2021-07-27

爬虫

爬虫功能可以用来爬取html类型的数据,一般用来获取网站的信息,比如爬取豆瓣的数据。。

目前爬虫使用的是go的colly框架,感兴趣的可以看一下官方文档

gocolly/colly: Elegant Scraper and Crawler Framework for Golang (github.com) (opens new window)

记得在auth里面加上 spider

本次我们实战的对象为一个壁纸网站,地址:4K壁纸_4K电脑壁纸_4K高清壁纸下载_4K,5K,6K,7K,8K壁纸图片素材_彼岸图网 (netbian.com) (opens new window)

下面我将通过插件来实现壁纸的爬取操作

# 初始化

使用初始化来初始化一个爬虫对象,后面我们可以通过这个对象来对网站进行爬取操作

let colly = spider.init({"Host":"www.douban.com","Cookie":cookie})
1

init方法只有一个参数,就是head信息,通过head信息,我们可以设置cookie,host等头部字段。

我们不需要设置agent,初始化的时候我会帮你设置agent为谷歌浏览器的agent

# 开始爬取

首先我们看一下网站的结构,网站的结构比较简单,我们需要的结果都在slist这个类里面

image-20210729085256538

colly框架使用的是jquery选择器,在使用前请参考一下官方文档:Selectors | jQuery API Documentation (opens new window)

下面这个是我们的插件代码,详细的可以看代码注释

// 获取API接口
const router =xBlog.router
const spider = xBlog.spider
// 注册路由
router.registerRouter("GET","",function(context){
    // 所有的图片数据
    let imgs = []
    // 插入数据
    let colly = spider.init({"referer": "https://pic.netbian.com/"})
    // 开始爬取,这里我们从slist这个类开始
    // .slist>.clearfix 表示获取.slist下的.clearfix这个dom的内容(.是css选择器)
    colly.OnHTML(".slist>.clearfix",function (e){
        // 遍历所有的项目,这里我们遍历所有的li
        e.ForEach("li", function (i,element) {
            // 这里我们可以使用element.ChildAttr来获取子元素的属性,比如这里我获取图片地址
            let src = "https://pic.netbian.com" + element.ChildAttr("a>img","src")
            // 我们还能获取标签里的内容
            let text = element.ChildText("a>b")
            // 放到数组中去
            imgs.push({src,text})
        })
    })
    // 开始进行爬取,这里我们使用Visit来访问我们要爬取的网站
    colly.Visit("https://pic.netbian.com/4kdongman/")
    router.response.ResponseOk(context,imgs)
})

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

注意element这个对象其实还是可以使用ForEach这个函数的,相当于可以无限套娃。。

效果如下,可以看到我们已经把所有的图片都获取到了。下面的那个文本乱码是因为这个网站是GBK编码的,目前暂不支持GBK网页的中文字体获取,这里只是为了演示一下获取标签内容功能而已

image-20210729222454793

编辑 (opens new window)
上次更新: 2021/07/29, 22:46:41
网络
定时任务

← 网络 定时任务→

Theme by Vdoing | Copyright © 2021-2021 小游
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式