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 相关文章推荐
35个Python编程小技巧
Apr 01 Python
python获得两个数组交集、并集、差集的方法
Mar 27 Python
编写Python脚本来获取Google搜索结果的示例
May 04 Python
python图片验证码生成代码
Jul 02 Python
Python跨文件全局变量的实现方法示例
Dec 10 Python
Django自定义manage命令实例代码
Feb 11 Python
对Python中9种生成新对象的方法总结
May 23 Python
python脚本实现验证码识别
Jun 07 Python
对Python 两大环境管理神器 pyenv 和 virtualenv详解
Dec 31 Python
详解python的四种内置数据结构
Mar 19 Python
Django 重写用户模型的实现
Jul 29 Python
使用python制作一个解压缩软件
Nov 13 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
dedecms 制作模板中使用的全局标记图文教程
2007/03/11 PHP
Yii2主题(Theme)用法详解
2016/07/23 PHP
PHP正则表达式匹配替换与分割功能实例浅析
2017/02/04 PHP
laravel框架模型、视图与控制器简单操作示例
2019/10/10 PHP
JS JavaScript获取Url参数,src属性参数
2021/03/09 Javascript
表格单元格交错着色实现思路及代码
2013/04/01 Javascript
防止xss和sql注入:JS特殊字符过滤正则
2013/04/18 Javascript
DOM节点深度克隆函数cloneNode()用法实例
2015/01/12 Javascript
zepto中使用swipe.js制作轮播图附swipeUp,swipeDown不起效果问题
2015/08/27 Javascript
javascript实现对表格元素进行排序操作
2015/11/18 Javascript
基于javascript实现最简单的选项卡切换效果
2016/05/16 Javascript
Bootstrap 折叠(Collapse)插件用法实例详解
2016/06/01 Javascript
微信小程序 获取当前地理位置和经纬度实例代码
2016/12/05 Javascript
详解ElementUI之表单验证、数据绑定、路由跳转
2017/06/21 Javascript
vue项目中axios使用详解
2018/02/07 Javascript
vue实现同一个页面可以有多个router-view的方法
2018/09/20 Javascript
微信小程序如何自定义table组件
2019/06/29 Javascript
vue 解决数组赋值无法渲染在页面的问题
2019/10/28 Javascript
JavaScript实现简单随机点名器
2019/11/21 Javascript
node.js express捕获全局异常的三种方法实例分析
2019/12/27 Javascript
VSCode 添加自定义注释的方法(附带红色警戒经典注释风格)
2020/08/27 Javascript
解决vue-loader加载不上的问题
2020/10/21 Javascript
pycharm 使用心得(九)解决No Python interpreter selected的问题
2014/06/06 Python
使用Python脚本对Linux服务器进行监控的教程
2015/04/02 Python
如何使用python爬取csdn博客访问量
2016/02/14 Python
Python根据已知邻接矩阵绘制无向图操作示例
2018/06/23 Python
对numpy中二进制格式的数据存储与读取方法详解
2018/11/01 Python
Pycharm最常用的快捷键及使用技巧
2020/03/05 Python
Python使用xpath实现图片爬取
2020/09/16 Python
求职简历的自我评价怎样写好
2013/10/07 职场文书
初中同学聚会感言
2014/02/11 职场文书
采购部长岗位职责
2014/06/13 职场文书
七一建党日演讲稿
2014/09/05 职场文书
2014年9.18纪念日演讲稿
2014/09/14 职场文书
教师四风对照检查材料思想汇报
2014/09/17 职场文书
新教师2015年度工作总结
2015/07/22 职场文书