文档章节

不可描述的爬虫

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
【01】基础:集搜客爬虫软件安装

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

fullerhua
2016/09/08
29
0
关于webmagic的建议

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

javaex999
2013/11/10
223
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

OSChina 周三乱弹 —— 我居然在 osc 里追剧

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @舆情风控小组 :分享王菲的单曲《笑忘书》 《笑忘书》- 王菲 手机党少年们想听歌,请使劲儿戳(这里) @艾尔库鲁斯:如果给大家一个选择的机...

小小编辑
44分钟前
57
6
rabbitMq的客户端使用笔记

1、channel声明队列的queueDeclare方法的参数解析 durable: 是否持久化, 队列的声明默认是存放到内存中的,如果rabbitmq重启会丢失,如果想重启之后还存在就要使队列持久化,保存到Erlang自...

DemonsI
52分钟前
0
0
“全新” 编程语言 Julia开箱体验

本文共 851字,阅读大约需要 3分钟 ! 概 述 Julia 是一个 “全新”的高性能动态编程语言,前两天迎来了其 1.0 正式版的重大更新。Julia集 Python、C、R、Ruby 之所长,感觉就像一种脚本语言...

CodeSheep
今天
12
0
软件自动化测试初学者忠告

题外话 测试入门 很多受过高等教育的大学生经常问要不要去报测试培训班来入门测试。 答案是否。 高等教育的合格毕业生要具备自学能力,如果你不具备自学能力,要好好地反省一下,为什么自己受...

python测试开发人工智能安全
今天
5
0
java并发备忘

不安全的“先检查后执行”,代码形式如下: if(条件满足){ //这里容易出现线程安全问题//doSomething}else{//doOther} 读取-修改-写入 原子操作:使用CAS技术,即首先从V中读取...

Funcy1122
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部