一、问题

本次利用selenium自动化测试,完成对淘宝的爬取,这样可以避免一些反爬的措施,也是一种爬虫常用的手段。本次实战的难点:

1.如何利用selenium绕过淘宝的登录界面

2.获取淘宝的页面内容实现翻页,并判断是否翻页成功。

3.获取每一页的信息,实现数据的抓取工作。

4.环境python3.6,对应的Chrome的webdriver驱动网址:http://chromedriver.storage.googleapis.com/index.html,将自己对应的webdriver放入scripts的环境内。

二、解决

1.在登录淘宝界面的时候,会弹出界面窗口,需要捕捉当前的页面,判断是否有变化。

先用self.browser【驱动名称】.current_window_handle来捕获当前的界面信息。

用self.browser【驱动名称】.switch_to_window(now_handle),来进行页面变化的判断

     self.browser.get(self.url)
input_content = self.wait.until(
EC.presence_of_element_located((By.CSS_SELECTOR, '#q'))
)
submit = self.wait.until(
EC.element_to_be_clickable((By.CSS_SELECTOR, "#J_TSearchForm > div.search-button > button"))
)
now_handle = self.browser.current_window_handle
input_content.send_keys(self.key)
submit.click()
self.browser.switch_to_window(now_handle)

2.在当前页码的判断,确定是否翻页成功。

获取输入标签的值,和点击按钮,完成翻页动作,再用EC.text_to_be_present_in_element来检测是否完成了翻页的动作。

     print("正在翻第{0}页".format(number))
input_content = self.wait.until(
EC.presence_of_element_located((By.CSS_SELECTOR, '#mainsrp-pager > div > div > div > div.form > input'))
)
submit = self.wait.until(
EC.element_to_be_clickable((By.CSS_SELECTOR, "#mainsrp-pager > div > div > div > div.form > span.btn.J_Submit"))
)
input_content.clear()
input_content.send_keys(number)
submit.click()
self.wait.until(
EC.text_to_be_present_in_element((By.CSS_SELECTOR, '#mainsrp-pager > div > div > div > ul > li.item.active > span'), str(number))
)
self.get_content()

3.利用选择器获取整个页面的内容:

利用xpath进行解析,也可以利用pyquery等一系列的解析方式进行解析。

   self.wait.until(
EC.presence_of_element_located((By.CSS_SELECTOR, '#mainsrp-itemlist > div > div > div:nth-child(1)'))
)
html = self.browser.page_source
content_text = etree.HTML(html)
names = content_text.xpath('*//div[@class="pic"]/a/img/@alt')
srcs = content_text.xpath('*//div[@class="pic"]/a/img/@data-src')
totals = [(name, src) for (name, src) in zip(names, srcs)]

三、结果呈现

四、总结

本项目利用了selenium来完成数据的自动爬取,需要注意获取的数据元素,以及数据信息。

重点在于弹出页面的判断以及对翻页成功的判断,其余的内容就是一般的数据爬取的方式。淘宝实战需要对webdriver有一定的基础和了解。才可以正确获取到标签内容。

webdriver的参考文档:

https://selenium-python.readthedocs.io/api.html#module-selenium.webdriver.common.action_chains

selenium实现淘宝的商品爬取的更多相关文章

  1. python 简单实现淘宝关键字商品爬取

    本文有2个文件 1:taobao_re_xpath 2:taobao_re_xpath_setting # 1:taobao_re_xpath # -*- coding:utf-8 -*- # aut ...

  2. selenium跳过webdriver检测并爬取淘宝我已购买的宝贝数据

    简介 上一个博文已经讲述了如何使用selenium跳过webdriver检测并爬取天猫商品数据,所以在此不再详细讲,有需要思路的可以查看另外一篇博文. 源代码 # -*- coding: utf-8 ...

  3. selenium+PhantomJS 抓取淘宝搜索商品

    最近项目有些需求,抓取淘宝的搜索商品,抓取的品类还多.直接用selenium+PhantomJS 抓取淘宝搜索商品,快速完成. #-*- coding:utf-8 -*-__author__ =''i ...

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

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

  5. 手把手教你写电商爬虫-第四课 淘宝网商品爬虫自动JS渲染

    版权声明:本文为博主原创文章,未经博主允许不得转载. 系列教程: 手把手教你写电商爬虫-第一课 找个软柿子捏捏 手把手教你写电商爬虫-第二课 实战尚妆网分页商品采集爬虫 手把手教你写电商爬虫-第三课 ...

  6. python爬虫-京东商品爬取

    京东商品爬取 仅供学习 一.使用selenium from selenium import webdriver from selenium.webdriver.common.keys import K ...

  7. iOS 集成阿里百川最新版(3.1.1.96) 实现淘宝授权登录以及调用淘宝客户端商品详情页

      公司最近要做第三方登录,由于是做导购项目,必不可少的有淘宝的授权登录.本来就是一个授权登录,没什么大不了的.但淘宝的无线开放业务——阿里百川更新的最新版本3.1.1.96,开发文档不是不详细,是很 ...

  8. 使用selenium抓取淘宝的商品信息

    淘宝的页面大量使用了js加载数据,所以采用selenium来进行爬取更为简单,selenum作为一个测试工具,主要配合无窗口浏览器phantomjs来使用. import re from seleni ...

  9. 使用Python 爬取 京东 ,淘宝。 商品详情页的数据。(避开了反爬虫机制)

    以下是爬取京东商品详情的Python3代码,以excel存放链接的方式批量爬取.excel如下 代码如下 from selenium import webdriver from lxml import ...

随机推荐

  1. TensorFlow 安装报错的解决办法(安装1.5版本)

    1.安装Anaconda 百度下载windows版本,一路点下一步,安装好了Anaconda,自带python3.6.6. 2.安装TensorFlow (1)打开Anaconda Prompt,输入 ...

  2. win7 80端口被iis占用

    下载iis管理器,打开,关闭80端口占用

  3. flask&nginx&gunicore部署

    部署流程: 1.处理服务器的基础环境, 安装和Python有关的软件 安装Python3-pip, Python3-dev apt install python3-pip apt install py ...

  4. Delphi使用逍遥安卓模拟器

    由于使用红鱼儿推荐的iTools安卓模拟器一打开virtualbox就消失,所以自己琢磨了使用逍遥安卓 首先在软件管理里面下载逍遥安卓,然后安装设置一下: 3.安装并启动虚拟机,Delphi IDE是 ...

  5. CSS: Grid homework redact.

    The web homework: Finished design: (I use six block with different color to show this homework and I ...

  6. linux 强制删除yum安装的php7.2

    由于支付宝SDK只支持php7.1,因为需要删除之前安装的7.2版,进行降级.通过yum remove不能完全删除php,必须通过rpm方式卸载.由于php安装模块间有依赖,因此需要按顺序进行卸载.如 ...

  7. java DES加解密及Wrong key size错误

    如下的DES加密方法会报错:Wrong key size public static String encryptDES(String source) throws Exception{ Secret ...

  8. CDH hue下定时执行hive脚步

        今天在看oozie时发现能在hue中执行hive 脚本,主要是hue 和 oozie结合使用,下面介绍下怎么使用的,挺恶心的,哈哈(在这里就不哔哔了) 提交oozie定时作业 1.进入hue界 ...

  9. (转)Flask框架+mySQL数据库:误删migrations文件夹后再次创建时遭遇错误(Can't locate revision identified by ‘xxx’)

    转自:(http://blog.csdn.net/Super_Tiger_Lee/article/details/77772752) 1.模型初始化环境: 命令:python manage.py db ...

  10. 二十一、proxyDesign 代理模式

    原理: 时序图: 代码清单: Printable public interface Printable { void setPrinterName(String name); String getPr ...