selenium是一个优秀的自动化测试工具,支持多种语言,具体介绍参考官方文档:https://www.seleniumhq.org/docs/。

下面我们使用selenium工具模拟用户点击商品详情页,在详情页中获取商品预览图。

一、安装selenium

pip install selenium

二、测试安装

python
>> from selenium import webdriver
>> browser = webdriver.Chrome()

若没有报错,则可进行后面的步骤。若有错误提示未找到chromedriver,需要下载chromedriver

三、下载chromedriver

下载与本地浏览器版本相同的chromedriver,下载后,需将该驱动包放入PATH中,我的浏览器版本 75.0.3770.142

wget http://npm.taobao.org/mirrors/chromedriver/74.0.3729.6/chromedriver_linux64.zip
tar zxvf chromedriver_linux64.zip
cd chromedriver_linux64
export PATH=$PATH:~/Downloads/chromedriver_linux64

四、使用举例

url = "http://www.baidu.com"
browser = webdriver.Chrome()
browser.get(url)
ele = browser.find_element_by_class_name('')
print(ele)
其中,find_element_by_class_name根据标签class样式来获取元素,类似的方法还有很多,比如:
find_element_by_id
find_element_by_xpath
find_element_by_tag_name
....

五、实战

下面我们以抓取www.layuva.com中商品信息为例,该站点的商品详情页链接是动态生成的,现在很多站点内容都是动态生成,这类站点很适合selenium工具抓取数据。具体demo参见附件

1、新建driver实例
url = "https://www.layuva.com/pc/index.html#/home/searchDetail?category_id=1060730203664142336"
browser = webdriver.Chrome()
browser.get(url) 2、获取商品列表
list_box = browser.find_elements_by_xpath('//*[@id="app"]//div[5]/div[2]/div/div')
3、模拟用户查看商品详情
for box in list_box:
box.click()
browser.switch_to.window(browser.window_handles[-1])
4、获取详情页中的商品信息
image_src = wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="app"]/div[5]/div/div[1]/div[1]/img'))).get_attribute('data-src') 5、退出详情页
browser.close()
browser.switch_to.window(browser.window_handles[0])
6、获取下一页
target = browser.find_element_by_css_selector(
'#app > div.searchDetail > div.width-base > div.common-page > ul > li.ivu-page-next')
if target.get_attribute('class').find('ivu-page-disabled') >= 0: // 判断是否有下一页
break
ActionChains(browser).move_to_element(target).click(target).perform() # 模拟点击《下一页》按钮

欢迎拍砖

Selenium工具爬取商品的更多相关文章

  1. selenium+phantomjs爬取京东商品信息

    selenium+phantomjs爬取京东商品信息 今天自己实战写了个爬取京东商品信息,和上一篇的思路一样,附上链接:https://www.cnblogs.com/cany/p/10897618. ...

  2. Python post请求模拟登录淘宝并爬取商品列表

    一.前言 大概是一个月前就开始做淘宝的爬虫了,从最开始的用selenium用户配置到selenium模拟登录,再到这次的post请求模拟登录.一共是三篇博客,记录了我爬取淘宝网的经历.期间也有朋友向我 ...

  3. Python3.x:Selenium+PhantomJS爬取带Ajax、Js的网页

    Python3.x:Selenium+PhantomJS爬取带Ajax.Js的网页 前言 现在很多网站的都大量使用JavaScript,或者使用了Ajax技术.这样在网页加载完成后,url虽然不改变但 ...

  4. selenium异步爬取(selenium+Chromedriver)

    在我们进行数据爬去的过程中,我们有时候会遇到异步加载信息的情况,以豆瓣电影分来排行榜为例,当我们在查看数据的过程中,会发现网页源码中并不包含我们想要的全部数据,但是当我们在进行向下滚动的时候,数据会一 ...

  5. [python爬虫] Selenium定向爬取PubMed生物医学摘要信息

    本文主要是自己的在线代码笔记.在生物医学本体Ontology构建过程中,我使用Selenium定向爬取生物医学PubMed数据库的内容.        PubMed是一个免费的搜寻引擎,提供生物医学方 ...

  6. selenium+phantomjs爬取bilibili

    selenium+phantomjs爬取bilibili 首先我们要下载phantomjs 你可以到 http://phantomjs.org/download.html 这里去下载 下载完之后解压到 ...

  7. selenium登录爬取知乎出现:请求异常请升级客户端后重试的问题(用Python中的selenium接管chrome)

    一.问题使用selenium自动化测试爬取知乎的时候出现了:错误代码10001:请求异常请升级客户端后重新尝试,这个错误的产生是由于知乎可以检测selenium自动化测试的脚本,因此可以阻止selen ...

  8. 使用selenium 多线程爬取爱奇艺电影信息

    使用selenium 多线程爬取爱奇艺电影信息 转载请注明出处. 爬取目标:每个电影的评分.名称.时长.主演.和类型 爬取思路: 源文件:(有注释) from selenium import webd ...

  9. scrapy中使用selenium来爬取页面

    scrapy中使用selenium来爬取页面 from selenium import webdriver from scrapy.http.response.html import HtmlResp ...

随机推荐

  1. HTTPie 工具使用入门

    HTTPie 是一个 HTTP 的命令行客户端,目标是让 CLI 和 web 服务之间的交互尽可能的人性化.这个工具提供了简洁的 http 命令,允许通过自然的语法发送任意 HTTP 请求数据,展示色 ...

  2. 汇编语言学习-Dos下的调试工具debug的使用教程

    1.常用的debug功能 (1)用Debug的R命令查看.改变CPU寄存器内容: (2)用Debug的D命令查看内存中的内容: (3)用Debug的E命令查看内存中的内容: (4)用Debug的U命令 ...

  3. JavaWeb_(Spring框架)Spring中的aop事务

    1.事务相关知识 a)什么是事务:把多条数据库操作捆绑到一起执行,要么都成功,要么都失败: b)事务的原则ACID: i.原子性:事务包含的所有操作,要么全部成功,要么全部失败回滚,成功全部应用到数据 ...

  4. docker-compose ELK+Filebeat查看docker及容器的日志

    我目前所在公司开发团队比较小,为集团下面的工厂开发了一套小的系统,跑在一台CentOS服务器上,服务器搭建了docker环境,安装了docker-compose,但在日志处理方面,暂时没有一个好的方法 ...

  5. Python3 编程之字符串处理

    Python3 编程之字符串处理 在编程中最常见的任务就是字符串的处理,So,学好字符串的使用非常重要 一.变量的定义规范 Python中声明变量时,要符合以下规则为准: 只能使用数字.字母.下划线组 ...

  6. <JavaScript> call()、apply()、bind() 的用法

    其实是一个很简单的东西,认真看十分钟就从一脸懵B 到完全 理解! 先看明白下面: 例 1 obj.objAge; obj.myFun() // 小张年龄 undefined   例 2 shows() ...

  7. 设计模式----外观(facade)模式

    外观(facade)模式外观模式(Facade),为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用.uml图

  8. MySQL 临时表和复制表

    MySQL 临时表在我们需要保存一些临时数据时是非常有用的.临时表只在当前连接可见,当关闭连接时,Mysql会自动删除表并释放所有空间. 临时表在MySQL 3.23版本中添加,如果你的MySQL版本 ...

  9. pod install报错 [!] Error installing......

    今天pod install出现这个错误: 解决办法: 多试几次就好了,也不知道之前几次都失败.....希望知道的可以留言告诉我哟!!!

  10. linux操作备份

    ---------------------------------------------------------------------------------------------------- ...