文档章节

不可描述的爬虫

Upcyan
 Upcyan
发布于 2017/06/05 11:03
字数 268
阅读 22
收藏 0
package main

import (
	"net/http"
	"io/ioutil"
	"regexp"
	"strings"
	"os"
	"strconv"
	"fmt"
)

func Check(err error) {
	defer func() { err = nil }()
	if err != nil {
		println("****ERROR****")
		panic(err)
	}
}

// 获取网页
func GetHTML(url string) (body string) {
	res, err := http.Get(url)
	Check(err)
	defer res.Body.Close()
	// 网页格式化
	data, err := ioutil.ReadAll(res.Body)
	Check(err)
	body = string(data)
	return
}

// 获取下载文件
func downloadfile(url string) (file []byte) {
	res, err := http.Get(url)
	Check(err)
	defer res.Body.Close()
	// 格式化
	file, err = ioutil.ReadAll(res.Body)
	Check(err)
	return
}

func main() {
	println("======================================================\n")
	println("\t小图片爬取程序\n")

	// 爬取页码
	//pages := []string{"2", "3", "4", "5", "6", "7", "8", "9", "10"}
	pages := []string{"2"}
	for _, index := range pages {
		GetImages("http://boards.4chan.org/s/" + index + "/")
	}
}

// 图片匹配正则
var imageItemExp = regexp.MustCompile(`"//i\.4cdn\.org/s/[0123456789]+s\.jpg"`)

// 下载图片方法
func GetImages(url string) {

	// 提取图片链接
	body := GetHTML(url)
	imgs := imageItemExp.FindAllStringSubmatch(body, 10000)
	// 链接格式化(去掉引号)
	imgUrl := make([]string, 0)
	for _, v := range imgs {
		u := strings.Replace(v[0], "\"", "", -1)
		url := u[0:28]
		imgUrl = append(imgUrl, url)
	}

	// 创建目录
	dirName := "图片存放目录"
	os.MkdirAll(dirName, 0777)
	// 下载图片
	for i, v := range imgUrl {
		fileName := "./" + dirName + "/img-" + strconv.Itoa(i) + ".jpg"

		data := downloadfile("http:" + v + ".jpg")

		// 保存文件
		if err := ioutil.WriteFile(fileName, data, 0666); err != nil {
			println("****下载错误****")
			panic(err)
		} else {
			fmt.Println("下载图片:", fileName)
		}
	}
}

© 著作权归作者所有

共有 人打赏支持
Upcyan
粉丝 0
博文 27
码字总数 12134
作品 0
合肥
基于Apache Nutch和Htmlunit的扩展实现AJAX页面爬虫抓取解析插件--nutch-htmlunit

Nutch Htmlunit Plugin 重要说明: 当前项目基于Nutch 1.X系列已停止更新维护,转向Nutch 2.x系列版本的新项目:http://www.oschina.net/p/nutch-ajax 项目简介 基于Apache Nutch 1.8和Htmlu...

xautlx
2013/09/23
9.4K
1
利用Python制作网易云音乐下载器

本文转载至知乎ID:Charles(白露未晞)知乎个人专栏 导语 似乎好久没有更爬虫相关的内容了。。。 而好多童鞋对爬虫相关的内容比较感兴趣。。。 于是打算更一波。。。 最近事情比较多,实在没...

W3Cschool小编
07/23
0
0
xautlx/nutch-htmlunit

---------------------------------------------------------------------------------------------------------- 提示:当前版本项目停止更新,最新Apache Nutch 2.X版本实现请访问: http......

xautlx
2014/08/07
0
0
关于webmagic的建议

@黄亿华 你好,想跟你请教个问题: webmagic非常不错:) 建议添加功能 1 持久化模块 2 把简单的爬虫如针对单一网站单一栏目的爬虫 用xml平配置 自动解析并实现爬虫。 相对于爬虫的傻瓜版本,...

javaex999
2013/11/10
223
1
【01】基础:集搜客爬虫软件安装

前言 漫漫网页数据大海洋,有一种数据搬运工的生物存在,他可能是数据分析师、也可能是爬虫工程师、也可能是业务员...等等。 作为一名程序员,接下来的一系列教程不谈编程,来教大家学开车。...

fullerhua
2016/09/08
29
0

没有更多内容

加载失败,请刷新页面

加载更多

github精选:微信小程序开发技巧(12月31日更新)2016

框架部分 所有页面都需要在 app.json 文件中注册在 pages 数组中,注册格式为:"路径/文件名" 注:文件名无需添加扩展名 app.josn 中的 pages 数组中的第一个页面为小程序的启动页 每个页面的...

阿K1225
15分钟前
1
0
OSChina 周日乱弹 —— 小心着凉 @红薯

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子:5.33起,其声呜呜然,如怨如慕,如泣如诉。余音袅袅,不绝如缕。分享Arch Enemy的单曲《Bridge Of Destiny (2009)》 《Bridge Of...

小小编辑
今天
319
4
what f,,

anlve
今天
10
0
初级开发-编程题

` public static void main(String[] args) { System.out.println(changeStrToUpperCase("user_name_abc")); System.out.println(changeStrToLowerCase(changeStrToUpperCase("user_name_abc......

小池仔
今天
15
0
现场看路演了!

HiBlock
昨天
27
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部