抓取天猫和淘宝的详情页图片|Golang
taobao.go
package main
import (
"crypto/md5"
"encoding/hex"
"fmt"
"github.com/PuerkitoBio/goquery"
"github.com/hunterhug/go_tool/spider"
"github.com/hunterhug/go_tool/spider/query"
"github.com/hunterhug/go_tool/util"
"regexp"
"strings"
)
func main() {
fmt.Println(`欢迎使用淘宝天猫图片下载小工具,在同级目录写入链接进taobao.txt,运行EXE即可`)
fmt.Println("链接如:tmall.com/item.htm?id=523350171126&skuId=3120562159704,tmall")
fmt.Println("---------------以上详情页中图片会保存在tmall目录-----------------------")
c, e := util.ReadfromFile("./taobao.txt")
if e != nil {
fmt.Println("打开taobao.txt出错")
} else {
urls := strings.Split(string(c), "\n")
for _, url := range urls {
url := strings.Replace(strings.TrimSpace(url), "\r", "", -1)
downlod(url)
}
}
fmt.Println("请手动关闭选框...")
util.Sleep(100)
}
func md55(s string) string {
h := md5.New()
h.Write([]byte(s))
rs := hex.EncodeToString(h.Sum(nil))
return rs
}
func downlod(urlmany string) {
temp := strings.Split(urlmany, ",")
url := temp[0]
filename := util.TodayString(3)
if len(temp) >= 2 {
filename = temp[1]
}
dir := "./" + filename
util.MakeDir(dir)
s, e := spider.NewSpider(nil)
if e != nil {
} else {
s.Url = url
dudu := "detail.tmall.com"
if strings.Contains(url, "item.taobao.com") {
dudu = "item.taobao.com"
}
s.NewHeader("Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36", dudu, nil)
content, err := s.Get()
if err != nil {
} else {
//fmt.Println(string(content))
docm, err := query.QueryBytes(content)
if err != nil {
fmt.Println(err.Error())
} else {
//fmt.Println(string(content))
docm.Find("img").Each(func(num int, node *goquery.Selection) {
img, e := node.Attr("src")
if e == false {
img, e = node.Attr("data-src")
}
if e && img != "" {
if strings.Contains(img, ".gif") {
return
}
fmt.Println("原始文件:" + img)
r, _ := regexp.Compile(`([\d]{1,4}x[\d]{1,4})`)
imgdudu := r.FindStringSubmatch(img)
sizes := "720*720"
if len(imgdudu) == 2 {
sizes = imgdudu[1]
}
temp := strings.Replace(img, sizes, "720x720", -1)
filename := md55(temp)
if util.FileExist(dir + "/" + filename + ".jpg") {
fmt.Println("文件存在:" + dir + "/" + filename)
} else {
fmt.Println("下载:" + temp)
s.Url = "http:" + temp
imgsrc, e := s.Get()
if e != nil {
fmt.Println("下载出错" + temp + ":" + e.Error())
return
}
e = util.SaveToFile(dir+"/"+filename+".jpg", imgsrc)
if e == nil {
fmt.Println("成功保存在" + dir + "/" + filename)
}
util.Sleep(2)
fmt.Println("暂停两秒")
}
}
})
}
}
}
}
在源码同级目录写入taobao.txt:
https://detail.tmall.com/item.htm?id=523350171126&skuId=3120562159704,myword
图片将会保存在myword里面
首先安装库
go get -v github.com/PuerkitoBio/goquery
go get -v github.com/hunterhug/go_tool
然后开跑!
go run taobao.go
如果嫌麻烦
请到这里下载打包exe执行文件:
http://pan.baidu.com/s/1jHKUGZG
进入go目录,下载taobao.rar
源码在:
https://github.com/hunterhug/taobao_img
截图如下:


少于150字的随笔不允许发布到首页候选区
少于150字的随笔不允许发布到首页候选区
少于150字的随笔不允许发布到首页候选区
少于150字的随笔不允许发布到首页候选区
少于150字的随笔不允许发布到首页候选区
少于150字的随笔不允许发布到首页候选区
少于150字的随笔不允许发布到首页候选区
少于150字的随笔不允许发布到首页候选区
少于150字的随笔不允许发布到首页候选区
少于150字的随笔不允许发布到首页候选区
少于150字的随笔不允许发布到首页候选区
少于150字的随笔不允许发布到首页候选区
少于150字的随笔不允许发布到首页候选区
少于150字的随笔不允许发布到首页候选区
抓取天猫和淘宝的详情页图片|Golang的更多相关文章
- 仿淘宝商品详情页上拉弹出新ViewController
新项目就要开始做了,里面有购物那块,就试着先把淘宝商品详情页的效果做了一下. 1.需求 1.第一次上拉时,A视图拉到一定距离将视图B从底部弹出,A视图也向上 2.显示B视图时下拉时,有刷新效果,之后将 ...
- iOS app url scheme跳转到淘宝商品详情页 唤醒app
最近涉及的一个业务,在app内的一个广告,点击打开webView,加载的是一个淘宝商品详情页,效果是打开该webView自动跳转至淘宝对应的页面,同时在自己的app仍然加载页面,点击评论等也同样能跳转 ...
- 第十二篇、OC_仿淘宝商品详情页的翻页
// // GFBProductViewController.m // elmsc // // Created by MAC on 2016/11/26. // Copyright © 2016年 G ...
- android仿京东、淘宝商品详情页上拉查看详情
话不多说,直接上干货,基本就是一个scrollview中嵌套两个scrollview或者webview;关键点事处理好子scrollview和父scrollview的触摸.滑动事件已达到想要的效果.大 ...
- vue实现淘宝商品详情页属性选择功能
方法一是自己想出来的,方法二来自忘记哪里看到的了 不知道是不是你要的效果: 方法一:利用input[type="radio"] css代码: input { display: no ...
- 仿京东淘宝商品详情页属性选择js效果
在网上找了好久发现都不符合要求就自己摸索写了一个,用到了linq.js这个linq to js 扩展,不然用纯JS遍历json查询要死人啊 demo:http://123.207.28.46:8086 ...
- 【Python3 爬虫】14_爬取淘宝上的手机图片
现在我们想要使用爬虫爬取淘宝上的手机图片,那么该如何爬取呢?该做些什么准备工作呢? 首先,我们需要分析网页,先看看网页有哪些规律 打开淘宝网站http://www.taobao.com/ 我们可以看到 ...
- python爬虫爬取京东、淘宝、苏宁上华为P20购买评论
爬虫爬取京东.淘宝.苏宁上华为P20购买评论 1.使用软件 Anaconda3 2.代码截图 三个网站代码大同小异,因此只展示一个 3.结果(部分) 京东 淘宝 苏宁 4.分析 这三个网站上的评论数据 ...
- Vue实现仿淘宝商品详情属性选择的功能
Vue实现仿淘宝商品详情属性选择的功能 先看下效果图:(同个属性内部单选,属性与属性之间可以多选) 主要实现过程: 所使用到的数据类型是(一个大数组里面嵌套了另一个数组)具体格式如下: attrA ...
随机推荐
- maven-dependency-plugin插件的使用
maven-dependency-plugin插件的使用 maven-dependency-plugin是 处理与依赖相关的插件.它有很多可用的goal,大部分是和依赖构建.分析和解决相关的goa ...
- 将 C# 编译为原生机器码
C# 用户似乎都希望 C# 可以和 C++ 一样编译为本地的机器码.如果 C# 可以编译为机器码,将可以做到: 1. 效率提高,可以取代 C++ . 2. 反编译. 当然微软在商业利益的考虑下 ...
- CSS布局——居中
参考文章1.CSS布局奇淫技巧之--各种居中 2.http://www.imooc.com/article/2235 1.行内元素水平居中text-align:center对图片,按钮,文字等行内元素 ...
- RHEL7文件权限
本文介绍Linux下的文件权限 操作系统为RHEL7.2_X86_64 可以从以下三种访问方式限制访问权限: 1 只允许用户自己访问 2 允许一个预先指定的用户组中的用户访问 3 允许系统中的任何用户 ...
- cl_gui_cfw=>dispatch
将已经触发的EVENT发送给他们各自的EVENT HANDLER,以便让这些事件得到响应. 根据返回值可以判断是否发送成功. CALL METHOD cl_gui_cfw=>dispatch ...
- SharePoint服务器端对象模型 之 访问用户、用户组和权限(Part 1)
(一)概述 SharePoint权限系统是整个SharePoint体系中一个比较重要的部分,权限系统主要分成两大部分:认证和授权. 认证主要解决的问题是判断登陆者是否合法,以及他究竟是哪一个用户,Sh ...
- Force.com微信开发系列(四)申请Access Token及自定义菜单之创建菜单
在微信接口开发中,许多服务的使用都离不开Access Token,Access Token相当于打开这些服务的钥匙,正常情况下会在7200秒内失效,重复获取将导致上次获取的Token失效,本文将首先介 ...
- VC连接mysql数据库错误:libmysql.lib : fatal error LNK1113: invalid machine 解决方法
VC连接MySQL的配置过程在上一篇博文中,不过当你设置好,以为万事大吉的时候,运行却出现这个错误:libmysql.lib : fatal error LNK1113: invalid machin ...
- MX4连接后adb无法识别解决方法
1. 使用android SDK目录中的 android SDK目录\tools 下的android脚本,命令行中执行 android update adb,成功运行后,会在用户名录下产生,C:\Us ...
- IOS 杂笔-3 (property参数)
(1)内存管理相关参数 Retain:对对象release旧值,retain新值(适用于OC对象类型) Assign:直接赋值(默认,适用于非oc对象类型) Copy:release旧值,copy新值 ...