文档章节

不可描述的爬虫

Upcyan
 Upcyan
发布于 2017/06/05 11:03
字数 268
阅读 29
收藏 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
合肥
私信 提问
爬取数据

【业务需求】 根据提供的数据,到指定网站上爬取相应的数据并清扫错误项。J 【人员要求】 在此描述对您对要找的接包方的要求:有爬虫经验,独立完成此项目,北京工作。 【交付要求】 需要提交...

nikkiqutj
2016/08/30
0
0
爬取网站数据

【业务需求】 根据提供的数据,到指定网站上爬取相应的数据并清扫错误项。J 【人员要求】 在此描述对您对要找的接包方的要求:有爬虫经验,独立完成此项目,北京工作。 【交付要求】 需要提交...

nikkiqutj
2016/08/16
1
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
ECharts实例(4)

运行结果图 A.世界地图(显示具体城市) B.柱状图类目反转 C.不可描述 D.不可描述 Remark: 菜鸟交流群:260052172(大神莫入)

低调的AckMan
2016/11/04
50
0

没有更多内容

加载失败,请刷新页面

加载更多

内存性能的正确解读

一台服务器,不管是物理机还是虚拟机,必不可少的就是内存,内存的性能又是如何来衡量呢。 1. 内存与缓存 现在比较新的CPU一般都有三级缓存,L1 Cache(32KB-256KB),L2 Cache(128KB-2MB)...

阿里云官方博客
5分钟前
0
0
并发+超时示例

func installMantisAgent() {log.Println("begin auto repair mantis agent")num := 0succNum := 0failNum := 0var Q *queue.Queueswitch g.Config().RepairType {ca......

我爱吃葱花
17分钟前
1
0
增加一列自增id

ALTER TABLE xxxx ADD iSiteId INT(11) NOT NULL PRIMARY KEY AUTO_INCREMENT FIRST;

colin_86
27分钟前
3
0
安卓代码混淆

Proguard是安卓提供的方便开发者对代码和apk进行保护和精简的工具,可在SDK/tools文件夹下找到。 proguard的作用 : 1,代码混淆 2,精简代码,删掉没有用到的代码,减小apk的体积。 使用场景...

whoisliang
36分钟前
1
0
配置Tomcat虚拟主机

12月13日任务 16.4 配置Tomcat监听80端口 16.5/16.6/16.7 配置Tomcat虚拟主机 16.8 Tomcat日志 配置tomcat监听80端口 默认tomcat监听的是8080端口,如果想直接输入ip就访问到网页,就需要进行...

robertt15
42分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部