本文一部分代码参考网络大牛文章,在此深表感谢,如有侵犯请告知,谢谢。

本文主要是作者在学习过程中,对一些学习内容进行总结与练习,期望对后来学习者有一定的帮助。

使用的Python第三方库主要包括以下几个:

import urllib.request,re
import json
import os
import re
from multiprocessing import Pool

其中urllib作用是为了进行网络数据的请求,re负责正则表达式进行数据的提取,json进行一些字符串与json数据之间的转换,multiprocessing是用了其中的进程池,进行多进程下载相关数据与图片(该部分暂未完全实现)。

本实验爬取的目标网站为淘女郎网站(https://mm.taobao.com/search_tstar_model.htm?spm=5679.126488.640745.2.1b545b81eOvhp1点击打开链接)如下图所示:

根据该网页的信息爬取每一位模特的身份信息以及靓照,每一个模特详细页面如下图所示:

爬取结果如下所示,将每一位模特的文字信息及靓图进行下载,保存至本地,纯粹为了学习,切勿用于其它用途。

下面对整个项目进行介绍:

1、解析美女列表页,分析每一位美女的主页地址、以及每一位美女的基本信息,由于淘宝采用ajax数据夹菜机制,在获取的源码中不能获取美女列表,所有需要采用POST请求的方式,动态获取美女列表信息,代码如下:

    firsturl = "https://mm.taobao.com/tstar/search/tstar_model.do?_input_charset=utf-8"# 采取动态POST请求的方式请求美女列表send_data = {}send_data['q'] = r''send_data['viewFlag'] = r'A'send_data['sortType'] = r'default'send_data['searchStyle'] = r''send_data['searchRegion'] = r'city:'send_data['searchFansNum'] = r''send_data['currentPage'] = str(x)send_data['pageSize'] = r'100'# 必须对原始请求数据进行编码(作者在此处遇到了很大的麻烦)data1 = urllib.parse.urlencode(send_data)data1 = data1.encode('gbk')# 创建POST请求request = urllib.request.Request(url=firsturl, data=data1)# 发送请求获取服务器内容,即美女们的列表response = urllib.request.urlopen(request)text_obj = response.read().decode('gbk')# 返回的数据为JSon格式,但是初始为txt,使用JSon模块转换为jsonjson_obj = json.loads(text_obj)# 获取json中的美奴主页地址列表girls = json_obj['data']['searchDOList']# 创建计数器,计算总共爬取多少位美女photocount = 0# 创建美女图片存储路径if not os.path.exists('GIRLS'):  # 判断GIRLS文件夹是否存在os.mkdir('GIRLS')for girl in girls:# 为每一个美女创建属于自己的文件夹temp = 'GIRLS/' + girl['realName']if not os.path.exists(temp):os.mkdir(temp)# 下载美女主页内的所有美女图片photocount = photocount + GetPhoto(temp, str(girl['userId']), girl)# break

2、获取每一位美女的主页地址,下载该地址网站中所有美女的图片,并将图片保存至本地文件夹,在此处作者将该步骤封装在一个下载函数内,代码如下:

#####根据图片ID下载图片,并保存到指定路径
def GetPhoto(path,id,girl):girlmessageurl='https://mm.taobao.com/self/aiShow.htm?spm=719.7763510.1998643336.2.HC43QM&userId='+idresponse=urllib.request.urlopen(girlmessageurl)texthtml=response.read().decode('gbk')#print(texthtml)#获取女孩信息,并进行存储'userId' (859049713592)with open('GIRLS/0.txt','a') as f:#f.write('姓名:'+girl['realName']+',ID:'+girl['userid']+',城市:'+girl['city']+',身高:'+girl['height']+',体重:'+girl['weight']+',QQ:'+qq+',weixin:'+weixin+',tele:'+tele)f.write('姓名:' + girl['realName'] + ',ID:' + str(girl['userId']) + ',城市:' + girl['city'] + ',身高:' + girl['height'] + ',体重:' + girl['weight'] + '\r\n')photos=re.findall(r'src="//(.*?)"/>',texthtml)i=1for photo in photos:#urllib.request.urlretrieve('http://img.alicdn.com/imgextra/i1/176817195/TB1a4uZHXXXXXbaXpXXXXXXXXXX_!!176817195-0-tstar.jpg','1.jpg')try:urllib.request.urlretrieve('http://'+photo,path+'/'+str(i)+'.jpg')print('正在下载美女('+girl['realName']+') 的第  '+str(i)+' 张美图')i=i+1except:print('图片下载失败')return i

3、在主函数中启动下载任务,并使用多进程进行快速下载(暂未实现),代码如下:

if __name__=='__main__':##print('主函数')#pool=Pool(processes=3)#for i in range(1,3):#    pool.apply_async(main,(i,))#    print(str(i)+'  个进程加入')#print('kaishi')#pool.close()#pool.join()main()

4、至此整个程序完成,如需帮助联系 qq:3501353029;

淘宝:https://shop165937777.taobao.com/?spm=a230r.7195193.1997079397.2.xufnqZ

当前版本源码下载地址:https://download.csdn.net/download/zz_z123/10301513

Github下载地址:https://github.com/zzzz123zz/GetPhoto-of-model/tree/master

Python3.x 网络爬虫之淘宝模特照片信息爬取相关推荐

  1. 数据分析与爬虫实战视频——学习笔记(一)(python基础、urllib、超时设置、自动模拟HTTP请求、异常处理、浏览器伪装、代理服务器、新闻爬虫、淘宝登陆和图片爬取)

    未经允许,请勿转载. 连载未完成状态 网址: [数据挖掘]2019年最新python3 数据分析与爬虫实战_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili https://www.bilibili ...

  2. Python网络爬虫获取淘宝商品价格

    1.Python网络爬虫获取淘宝商品价格代码: #-*-coding:utf-8-*- ''' Created on 2017年3月17日 @author: lavi ''' import reque ...

  3. Python网络爬虫数据采集实战:同花顺动态网页爬取

    前文的爬虫都建立在静态网页基础之上,首先通过请求网站url获取到网页源代码.之后对源代码进行信息提取进而存储即可,本文则针对动态网页进行数据采集,首先介绍Ajax相关理论,之后实战爬取同花顺动态网页, ...

  4. [Python3网络爬虫开发实战] 7-动态渲染页面爬取-4-使用Selenium爬取淘宝商品

    在前一章中,我们已经成功尝试分析Ajax来抓取相关数据,但是并不是所有页面都可以通过分析Ajax来完成抓取.比如,淘宝,它的整个页面数据确实也是通过Ajax获取的,但是这些Ajax接口参数比较复杂,可 ...

  5. 网络爬虫,淘宝API商品详情测试(抓取详情数据)

    网络爬虫是通过什么方式来寻找网络上的信息的呢 通俗来讲,网络蜘蛛是通过网页的链接地址来寻找网页的.从网站某一个页面(通常是首页)开始,读取网页的内容,找到在网页中的其它链接地址,然后通过这些链接地址寻 ...

  6. 网络爬虫实战||淘宝、股票定向爬虫

    正则表达式的概念 regular expression           regex          RE 正则表达式是用来简洁表达一组字符串的表达式. 正则表达式的优势:简洁 正则表达式的语法 ...

  7. Scrapy框架爬虫项目:京东商城笔记本电脑信息爬取

    一.创建Scrapy项目 在cmd中输入一下指令创建一个新的scrapy项目及一个爬虫 scrapy startproject JD_Goodscd JD_Goodsscrapy genspider ...

  8. Python3网络爬虫开发实战,使用IP代理爬取微信公众号文章

    前面讲解了代理池的维护和付费代理的相关使用方法,接下来我们进行一下实战演练,利用代理来爬取微信公众号的文章. 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知 ...

  9. python爬虫最难爬取网站——天猫淘宝,多页爬取遭反爬IP被禁。求大佬赐教。

    python爬虫设置代理ip池--方法(一) 爬取任务是:爬取所在地为新疆的买新疆特产的店铺 代码如下: import requests from lxml.html import etree imp ...

最新文章

  1. 移动端iPhone系列适配问题的一些坑
  2. 报班学python到底怎么样-你们都是怎么学 Python 的?
  3. HTML事件的执行顺序
  4. java 下载url图片_java下载url图片链接
  5. PyTorch深度学习实践03
  6. 使用github时因fatal: remote origin already exists错误,无法提交
  7. Json字符串转对象,使用ObjectMapper方式报错:no String-argument constructor/factory method
  8. 基于单片机超声波测距系统的设计_一种基于UWB技术实现的测距防撞系统
  9. JAVA中的内部类(二)成员内部类
  10. WinDbg+Rotor解析WinForm调用堆栈及实现
  11. iOS开发中防止键盘挡住UITextField解决方案
  12. 将深度缓冲z值变换到相机坐标系
  13. DB2with的定义与用法
  14. DisplayUtils
  15. ubuntu安装罗技g-hub
  16. JMeter入门教程
  17. c++ idea 插件_idea快速开发插件
  18. 微信小程序input层级穿透解决
  19. linux终端文件名前特殊符号,Linux特殊符号大全
  20. 两条平行线之间的距离

热门文章

  1. 基于Java的社区团购系统丨团购商城系统
  2. sdcc编译器使用makefile
  3. 10多个LearnDash示例和演示:从这些在线教育网站获得灵感!
  4. document.title获取当前网页的标题
  5. 回合制小游戏(英文)
  6. 遥感技术及高分遥感影像在地震中的应用
  7. springboot电商系统-生鲜电商-蔬菜商城
  8. 快手吃的是“大直播”红利,百度微信正跑步入场
  9. MC服安装Geyser使基岩版玩家进入JE服务器
  10. 12个降维技术的终极指南(使用Python代码)