selenium 是Web应用测试工具,可以利用selenium和python,以及chromedriver等工具实现一些动态加密网站的抓取。本文利用这些工具抓取淘宝内衣评价买家秀图片。

准备工作

下面先安装selenium,在命令行输入python,然后输入安装命令

1
pip install selenium

安装chromedriver和chrome,二者版本需要对应

各版本下载地址
下载完成后解压,将exe放到你的python安装目录下的scripts目录下即可。
接下来分析网站,并且模拟登陆爬取数据,登陆淘宝,F12检测浏览器请求,F5刷新下,在network栏找到可以分析的几个网络请求,找到cookie

分析和编码

先根据cookie登陆淘宝

这段代码初始化了ChromeDriver的参数,然后根据cookie设置chrome选项,成功后刷新下页面,并且初始化reuests session,用于维持会话
初始化cookie代码

初始化session代码

这样利用cookie就能成功登陆淘宝了

利用chromedriver打开了一个新窗口,然后访问指定的商品页面,接下来要做的都是点击累计评价,然后点击图片评价选择框。

累计评价的标签元素xpath在network中找到,可以通过find_element_by_xpath函数访问该标签,然后调用click函数就完成了点击,当然也可以通过presence_of_element_located超时等待查询,查不到指定标签就返回超时异常。相关接口调用比较简单,可以看看selenium基础查询和操作
python selenium api
代码功能是先点击评论,然后滚动1000像素位置,抓取找到评论区元素,根据评论区的图片元素找到资源地址,同时代码实现了自动点击下一页和判断末页功能。

代码找到了评论列表,然后将评论列表传给getPhoto函数,抓取每个评论图片,下面是抓取图片的核心代码。

def getPhoto(self,*comentlist):
try:
for comments in comentlist:
#print(len(comentlist))
#print(type(comments))
desc=comments.find_element_by_class_name('tm-rate-fulltxt').text
if len(desc) == 0:
desc='abcdef'
dirfix=desc[0:6]
dirname=os.path.join(self.path,dirfix)
if os.path.exists(dirname) == False:
os.makedirs(dirname)
txtname=os.path.join(dirname,desc[0:6]+'.txt')
if os.path.exists(txtname) == False:
with open (txtname,'w',encoding='utf-8') as file:
file.write(desc)
photos=comments.find_element_by_class_name('tm-m-photos')
photos=photos.find_element_by_class_name('tm-m-photos-thumb')
photos=photos.find_elements_by_tag_name('li')
for ph in photos:
phaddr=ph.get_attribute('data-src')
print(phaddr)
bigph=phaddr.split('_4')[0]
print(bigph)
imgname= os.path.join(dirname ,bigph.split('/')[-1])
if os.path.exists(imgname) :
continue
img=self.session_.get('http:'+bigph,headers=self.headers_,cookies=self.cookiejar_).content
print('正在爬取%s' %(bigph))
with open (imgname,'wb') as imgfile:
imgfile.write(img)
print('爬取成功%s' %(bigph))
time.sleep(2)
except NoSuchElementException:
print('No Element')
except TimeoutException :
print('TimeoutException')
except:
print('getPhoto exception')
pass

效果展示




源码下载地址
https://github.com/secondtonone1/python-
我的公众号

python(27) 抓取淘宝买家秀的更多相关文章

  1. 简单的抓取淘宝关键字信息、图片的Python爬虫|Python3中级玩家:淘宝天猫商品搜索爬虫自动化工具(第一篇)

    Python3中级玩家:淘宝天猫商品搜索爬虫自动化工具(第一篇) 淘宝改字段,Bugfix,查看https://github.com/hunterhug/taobaoscrapy.git 由于Gith ...

  2. Python爬虫实战八之利用Selenium抓取淘宝匿名旺旺

    更新 其实本文的初衷是为了获取淘宝的非匿名旺旺,在淘宝详情页的最下方有相关评论,含有非匿名旺旺号,快一年了淘宝都没有修复这个. 可就在今天,淘宝把所有的账号设置成了匿名显示,SO,获取非匿名旺旺号已经 ...

  3. Python爬虫实战四之抓取淘宝MM照片

    原文:Python爬虫实战四之抓取淘宝MM照片其实还有好多,大家可以看 Python爬虫学习系列教程 福利啊福利,本次为大家带来的项目是抓取淘宝MM照片并保存起来,大家有没有很激动呢? 本篇目标 1. ...

  4. Python爬虫之一 PySpider 抓取淘宝MM的个人信息和图片

    ySpider 是一个非常方便并且功能强大的爬虫框架,支持多线程爬取.JS动态解析,提供了可操作界面.出错重试.定时爬取等等的功能,使用非常人性化. 本篇通过做一个PySpider 项目,来理解 Py ...

  5. 一次Python爬虫的修改,抓取淘宝MM照片

    这篇文章是2016-3-2写的,时隔一年了,淘宝的验证机制也有了改变.代码不一定有效,保留着作为一种代码学习. 崔大哥这有篇>>小白爬虫第一弹之抓取妹子图 不失为学python爬虫的绝佳教 ...

  6. Python爬虫学习==>第十二章:使用 Selenium 模拟浏览器抓取淘宝商品美食信息

    学习目的: selenium目前版本已经到了3代目,你想加薪,就跟面试官扯这个,你赢了,工资就到位了,加上一个脚本的应用,结局你懂的 正式步骤 需求背景:抓取淘宝美食 Step1:流程分析 搜索关键字 ...

  7. 芝麻HTTP:Python爬虫实战之抓取淘宝MM照片

    本篇目标 1.抓取淘宝MM的姓名,头像,年龄 2.抓取每一个MM的资料简介以及写真图片 3.把每一个MM的写真图片按照文件夹保存到本地 4.熟悉文件保存的过程 1.URL的格式 在这里我们用到的URL ...

  8. scrapy抓取淘宝女郎

    scrapy抓取淘宝女郎 准备工作 首先在淘宝女郎的首页这里查看,当然想要爬取更多的话,当然这里要查看翻页的url,不过这操蛋的地方就是这里的翻页是使用javascript加载的,这个就有点尴尬了,找 ...

  9. 使用selenium模拟浏览器抓取淘宝信息

    通过Selenium模拟浏览器抓取淘宝商品美食信息,并存储到MongoDB数据库中. from selenium import webdriver from selenium.common.excep ...

随机推荐

  1. [GitHub]GitHub for Windows离线安装的方法

    这几天一直在尝试安装GitHub for windows ,安装程序是从https://windows.github.com/ 下载到的OneClick 部署程序,版本号为2.11.0.5.可能是因为 ...

  2. 洛谷 P3302 [SDOI2013]森林

    ->题目链接 题解: #include<queue> #include<cstdio> #include<cstring> #include<iostr ...

  3. 表单设置 disabled 后无法传值到后台的解决办法

    在提交 from 表单时,下面的 input 无法正常提交给后台, 发现,如果input的字段设为disabled,该表单是无法提交的. <input type="text" ...

  4. [CF1007B]Pave the Parallelepiped[组合计数+状态压缩]

    题意 \(t\) 组询问,给你 \(A, B, C\) ,问有多少组三元组 \((a, b, c)\) 满足他们任意排列后有: \(a|A,\ b|B,\ c|C\) . \(A,B,C,t\leq ...

  5. Visual Studio Package 插件开发(Visual Studio SDK)

    背景 这段时间公司新做了一个支付系统,里面有N个后台服务,每次有更新修改,拷贝打包发布包“不亦乐乎”...于是我想要不要自己定制个打包插件. 部分朋友可能会认为,有现成的可以去找一个,干嘛不用持续集成 ...

  6. MVC的多页面后台管理系统

    MVC的多页面后台管理系统 同样功能的后台管理系统,也是可以使用 ASP.NET MVC .Web API 和JQuery 来制作. 所有的功能都与Angular js的单页面相同.应用层所有的方法都 ...

  7. win10+anaconda3+python3.6+opencv3.1.0

    最近用windows系统比较多,就想在win10下搞一下深度学习这一方面的研究,那么就需要配置好环境巴拉巴拉的一堆东西.默默记个笔记,正所谓“好记性不如烂笔头”. 1.安装Anaconda 这个是一个 ...

  8. Asp.Net_Ajax调用WebService返回Json前台获取循环解析

    利用JQuery的$.ajax()可以很方便的调用 asp.net的后台方法.但往往从后台返回的json字符串不能够正确解析,究其原因,是因为没有对返回的json数据做进一步的加工.其实,这里只需 要 ...

  9. Js_cookie保存登录名

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head ...

  10. bower配置私服nexus3

    内容来自 https://help.sonatype.com/repomanager3/bower-repositories#BowerRepositories-BrowsingBowerReposi ...