golang实现抓取图片 Meizar

Apache
Google Go
跨平台
2016-06-06
亓斌哥哥

golang实现抓取妹子图

默认图片来源网站:http://jandan.net

依赖项目:https://github.com/PuerkitoBio/goquery

编译源码前,请准备好以上项目, 方法:

go get github.com/PuerkitoBio/goquery

如何使用

window用户可以直接下载win_exe目录下在的zip文件,解压出一个main.exe文件。

其他平台用户,可以自行下载源码编译。

使用步骤(以windows为例):

  1. 打开命令行定位到编译文件所在目录

  2. 输入命令:

main.exe -dir D:\jandan -start 2009

参数说明

  1. -dir 可选, 制定图片保存路径,默认保存当前目录/images/下

  2. -start 可选,从多少页开始,默认从第2009页开始抓取(注意程序是按照页码倒序抓取的)

  3. -cookie 可选,用户使用的cookie, chrome下可以打开http://jandan.net,按F12键,选择network项查看,这个参数主要在抓取时发生503错误使用的,默认不用指定

效果

图片就不展示了, 大家可以自己运行看。

扩展

默认图片来源是煎蛋上的, 但是作为一个___,难道一个煎蛋就满足了吗?不可能!!!! 所以,我们还可以自定义抓取规则,来抓取不同网站的内容。

怎么定制?

只需要实现Rule接口的3个方法就可以了。例如煎蛋的抓取规则是:

// /rule/jandanRule.go type JandanRule struct{} func (p *JandanRule) UrlRule() (url string) { return "http://jandan.net/ooxx/" } func (p *JandanRule) PageRule(currentPage int) (page string) { return "page-" + strconv.Itoa(currentPage)
} func (p *JandanRule) ImageRule(doc *goquery.Document, f func(image string)) {
    doc.Find("a.view_img_link").Each(func(i int, s *goquery.Selection) { if img, exist := s.Attr("href"); exist { f(img)
        }
    })
}
  1. 第一个方法返回我们要抓取的url

  2. 第二个方法根据当前页返回url后面的页面信息

  3. 第三个方法是内容匹配规则, 将匹配到的内容利用f函数返回

加载中

评论(4)

小杰瑞
小杰瑞
哎哟,我本来想做jandan 的妹子图采集的 也是用go 被别人先搞了。... 追加评论:https://github.com/decadestory/picpicker
dingdayu
dingdayu
妹子图不错哈
端木微雨
代码没看,网址不错,哈哈哈
南漂一卒
南漂一卒
GoQuery 的简介 —— A little like that j-thing…… 40 #Meizar#

Meizar 2016/6/7 更新发布, 新增 RuleProvider

Meizar 2016/6/7 更新发布了。 增加RuleProvider函数,所以,切换Rule时,只需要修改RuleProvider的返回值就可以 增加一个新的Rule-“MeiRule”,该Rule用来抓取https://meizi.us/图片。 增加...

2016/06/07 00:41

没有更多内容

加载失败,请刷新页面

没有更多内容

暂无问答

暂无博客

返回顶部
顶部