Python3.x 网络爬虫之淘宝模特照片信息爬取
本文一部分代码参考网络大牛文章,在此深表感谢,如有侵犯请告知,谢谢。
本文主要是作者在学习过程中,对一些学习内容进行总结与练习,期望对后来学习者有一定的帮助。
使用的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 网络爬虫之淘宝模特照片信息爬取相关推荐
- 数据分析与爬虫实战视频——学习笔记(一)(python基础、urllib、超时设置、自动模拟HTTP请求、异常处理、浏览器伪装、代理服务器、新闻爬虫、淘宝登陆和图片爬取)
未经允许,请勿转载. 连载未完成状态 网址: [数据挖掘]2019年最新python3 数据分析与爬虫实战_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili https://www.bilibili ...
- Python网络爬虫获取淘宝商品价格
1.Python网络爬虫获取淘宝商品价格代码: #-*-coding:utf-8-*- ''' Created on 2017年3月17日 @author: lavi ''' import reque ...
- Python网络爬虫数据采集实战:同花顺动态网页爬取
前文的爬虫都建立在静态网页基础之上,首先通过请求网站url获取到网页源代码.之后对源代码进行信息提取进而存储即可,本文则针对动态网页进行数据采集,首先介绍Ajax相关理论,之后实战爬取同花顺动态网页, ...
- [Python3网络爬虫开发实战] 7-动态渲染页面爬取-4-使用Selenium爬取淘宝商品
在前一章中,我们已经成功尝试分析Ajax来抓取相关数据,但是并不是所有页面都可以通过分析Ajax来完成抓取.比如,淘宝,它的整个页面数据确实也是通过Ajax获取的,但是这些Ajax接口参数比较复杂,可 ...
- 网络爬虫,淘宝API商品详情测试(抓取详情数据)
网络爬虫是通过什么方式来寻找网络上的信息的呢 通俗来讲,网络蜘蛛是通过网页的链接地址来寻找网页的.从网站某一个页面(通常是首页)开始,读取网页的内容,找到在网页中的其它链接地址,然后通过这些链接地址寻 ...
- 网络爬虫实战||淘宝、股票定向爬虫
正则表达式的概念 regular expression regex RE 正则表达式是用来简洁表达一组字符串的表达式. 正则表达式的优势:简洁 正则表达式的语法 ...
- Scrapy框架爬虫项目:京东商城笔记本电脑信息爬取
一.创建Scrapy项目 在cmd中输入一下指令创建一个新的scrapy项目及一个爬虫 scrapy startproject JD_Goodscd JD_Goodsscrapy genspider ...
- Python3网络爬虫开发实战,使用IP代理爬取微信公众号文章
前面讲解了代理池的维护和付费代理的相关使用方法,接下来我们进行一下实战演练,利用代理来爬取微信公众号的文章. 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知 ...
- python爬虫最难爬取网站——天猫淘宝,多页爬取遭反爬IP被禁。求大佬赐教。
python爬虫设置代理ip池--方法(一) 爬取任务是:爬取所在地为新疆的买新疆特产的店铺 代码如下: import requests from lxml.html import etree imp ...
最新文章
- 移动端iPhone系列适配问题的一些坑
- 报班学python到底怎么样-你们都是怎么学 Python 的?
- HTML事件的执行顺序
- java 下载url图片_java下载url图片链接
- PyTorch深度学习实践03
- 使用github时因fatal: remote origin already exists错误,无法提交
- Json字符串转对象,使用ObjectMapper方式报错:no String-argument constructor/factory method
- 基于单片机超声波测距系统的设计_一种基于UWB技术实现的测距防撞系统
- JAVA中的内部类(二)成员内部类
- WinDbg+Rotor解析WinForm调用堆栈及实现
- iOS开发中防止键盘挡住UITextField解决方案
- 将深度缓冲z值变换到相机坐标系
- DB2with的定义与用法
- DisplayUtils
- ubuntu安装罗技g-hub
- JMeter入门教程
- c++ idea 插件_idea快速开发插件
- 微信小程序input层级穿透解决
- linux终端文件名前特殊符号,Linux特殊符号大全
- 两条平行线之间的距离