python 爬虫一键爬取 淘宝天猫宝贝页面主图颜色图和详情图的教程


Posted in Python onMay 22, 2018

实例如下所示:

import requests
import re,sys,os
import json
import threading
import pprint
class spider:
 def __init__(self,sid,name):
 
 self.id = sid
 self.headers = { "Accept":"text/html,application/xhtml+xml,application/xml;",
  "Accept-Encoding":"gzip",
  "Accept-Language":"zh-CN,zh;q=0.8",
  "Referer":"http://www.example.com/",
  "User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.36"
  }
 
 self.name=name
 def openurl(self,url):
 
 self.request = requests.get(url,headers = self.headers) 
 if self.request.ok:
  return self.request.text
  
 def matchs(self):
 
 tmall_exp = r"Setup\(([\s\S]+?)\);"### 匹配商品数据的正则
 detail= r"src=\"(https://img\S+?[jpgifn]+?)\"" ###匹配 商品详情图的正则
 html = self.openurl("https://detail.tmall.com/item.htm?id=%s"%self.id)
 data = re.findall(tmall_exp,html)
 data = json.loads(data[0])
 main_img = data['propertyPics'] ## 这里包括了主图和颜色图的地址
 color_data =data['valItemInfo'] ['skuList'] ### 这里获得商品的颜色信息列表 包括颜色编码 颜色名称,商品skuID
 detail_html = self.openurl("http:"+data['api']["httpsDescUrl"])
 detail_image = re.findall(detail,detail_html)
 self.newdata={"MAIN":main_img['default'],"DETAIL":detail_image,"id":self.id,}
 
 psvs = []
 self.newdata['COLOR']=[]
 
 for v in range(len(color_data)):
  if ";"in color_data[v]["pvs"]:
  psv = color_data[v]['pvs'][color_data[v]['pvs'].find(";")+1:]
  else:
  psv = color_data[v]['pvs']
  if psv in psvs:
  
  continue
  psvs.append(psv)
 
  self.newdata['COLOR'].append({color_data[v]["names"]:main_img[";"+psv+";"]})
  
 pprint.pprint(self.newdata)
 
 return self.newdata
 
 def download(self):
 if len(self.newdata)>0:
  for x in range(len(self.newdata['MAIN'])):
  
  threading.Thread(target=self.download_main,args=(self.newdata['MAIN'][x],x)).start()
  
  for x in self.newdata['COLOR']:
  
  threading.Thread(target=self.download_color,args=(x,)).start()
  for x in range(len(self.newdata['DETAIL'])):
  
  threading.Thread(target=self.download_detail,args=(self.newdata['DETAIL'][x],x)).start()
 return
 def download_main(self,url,index):
 try:
  img = requests.get("http:"+url,stream=True,headers = self.headers,timeout=10)
 except:
  print(sys.exc_info())
  return
 if img.ok:
  if not os.path.exists(self.name+"/main"):
  try:
   os.makedirs(self.name+"/main")
  except:
   pass
  imgs = open(self.name+"/main/%s.jpg"%index,"wb")
  imgs.write(img.content)
  imgs.close()
  
 def download_color(self,url):
  
 try:
  img = requests.get("http:"+url[list(url.keys())[0]][0],stream=True,headers = self.headers,timeout=10)
 except:
  print(sys.exc_info())
  return
 if img.ok:
  if not os.path.exists(self.name+"/color"):
  try:
   os.makedirs(self.name+"/color")
  except:
   pass
  if "/"in list(url.keys())[0]:
  color = list(url.keys())[0].replace("/","_")
  elif "\\" in list(url.keys())[0]:
  color = list(url.keys())[0].replace("\\","_")
  else:
  color = list(url.keys())[0]
  imgs = open(self.name+"/color/%s.jpg"%color,"wb")
  imgs.write(img.content)
  imgs.close()
 def download_detail(self,url,index):
 try:
  img = requests.get(url,stream=True,headers = self.headers,timeout=10)
 except:
  print(sys.exc_info())
  return
 if img.ok:
  if not os.path.exists(self.name+"/detail"):
  try:
   os.makedirs(self.name+"/detail")
  except:
   pass
  
  imgs = open(self.name+"/detail/%s.jpg"%index,"wb")
  imgs.write(img.content)
  imgs.close()
  
if __name__ =="__main__":
 
 sid = 528766269341 ## 这里输入天猫宝贝ID
 taobao = spider(sid,"下载图片/T")
 taobao.matchs()
 taobao.download()

以上这篇python 爬虫一键爬取 淘宝天猫宝贝页面主图颜色图和详情图的教程就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
实例讲解Python编程中@property装饰器的用法
Jun 20 Python
深入了解Python中pop和remove的使用方法
Jan 09 Python
Python解决八皇后问题示例
Apr 22 Python
python2与python3中关于对NaN类型数据的判断和转换方法
Oct 30 Python
python视频按帧截取图片工具
Jul 23 Python
PyQt5基本控件使用详解:单选按钮、复选框、下拉框
Aug 05 Python
pycharm 安装JPype的教程
Aug 08 Python
python requests库爬取豆瓣电视剧数据并保存到本地详解
Aug 10 Python
pandas read_excel()和to_excel()函数解析
Sep 19 Python
python爬虫实现获取下一页代码
Mar 13 Python
浅谈python3打包与拆包在函数的应用详解
May 02 Python
详解如何在pyqt中通过OpenCV实现对窗口的透视变换
Sep 20 Python
python3.x实现发送邮件功能
May 22 #Python
python 爬虫 批量获取代理ip的实例代码
May 22 #Python
python 获取当天每个准点时间戳的实例
May 22 #Python
selenium+python 去除启动的黑色cmd窗口方法
May 22 #Python
python3实现163邮箱SMTP发送邮件
May 22 #Python
django请求返回不同的类型图片json,xml,html的实例
May 22 #Python
Django使用HttpResponse返回图片并显示的方法
May 22 #Python
You might like
使用ThinkPHP+Uploadify实现图片上传功能
2014/06/26 PHP
ThinkPHP实现简单登陆功能
2017/04/28 PHP
PHP 自动加载类原理与用法实例分析
2020/04/14 PHP
JavaScript高级程序设计 读书笔记之九 本地对象Array
2012/02/27 Javascript
thinkphp中常用的系统常量和系统变量
2014/03/05 Javascript
js操作模态窗口及父子窗口间相互传值示例
2014/06/09 Javascript
jQuery中scrollLeft()方法用法实例
2015/01/16 Javascript
JS实现的在线调色板实例(附demo源码下载)
2016/03/01 Javascript
基于JavaScript实现在新的tab页打开url
2016/08/04 Javascript
利用jquery给指定的table动态添加一行、删除一行的方法
2016/10/12 Javascript
详解AngularJS中$filter过滤器使用(自定义过滤器)
2017/02/04 Javascript
整理关于Bootstrap表单的慕课笔记
2017/03/29 Javascript
JavaScript中闭包的详解
2017/04/01 Javascript
Vue.js实现按钮的动态绑定效果及实现代码
2017/08/21 Javascript
bootstrap实现嵌套模态框的实例代码
2020/01/10 Javascript
浅谈JavaScript中你可能不知道URL构造函数的属性
2020/07/13 Javascript
jQuery实现移动端扭蛋机抽奖
2020/11/08 jQuery
利用打码兔和超人打码自封装的打码类分享
2014/03/16 Python
深入理解Python中命名空间的查找规则LEGB
2015/08/06 Python
Python基于sklearn库的分类算法简单应用示例
2018/07/09 Python
python事件驱动event实现详解
2018/11/21 Python
python issubclass 和 isinstance函数
2019/07/25 Python
Python 实现大整数乘法算法的示例代码
2019/09/17 Python
解决pycharm最左侧Tool Buttons显示不全的问题
2019/12/17 Python
Pytorch使用PIL和Numpy将单张图片转为Pytorch张量方式
2020/05/25 Python
利用Python的folium包绘制城市道路图的实现示例
2020/08/24 Python
python实现按日期归档文件
2021/01/30 Python
SIDESTEP荷兰:在线购买鞋子
2019/11/18 全球购物
外贸学院会计专业应届生求职信
2013/11/14 职场文书
小型女装店的创业计划书
2014/01/09 职场文书
学生安全责任书范本
2014/07/24 职场文书
投标人法定代表人授权委托书格式
2014/09/28 职场文书
教师个人查摆剖析材料
2014/10/14 职场文书
离婚协议书怎么写的
2014/12/14 职场文书
《1942》观后感
2015/06/08 职场文书
导游词之河北邯郸
2019/09/12 职场文书