Selenium入门(三)如何获取京东的商品列表
来源:互联网 发布:舞台灯光编程软件 编辑:程序博客网 时间:2024/05/21 07:14
(最近几天没有更新博客,不是因为偷懒,而是因为每天都在调试代码到很晚,没法更新,不过好消息是基本对Selenium入了门,可以带来不少干货)
延续上篇的话题,仅仅在京东上获得一个产品的价格肯定无法满足胃口,
咱们的目标肯定是将所有商品的所有信息一网打尽,那么如何实现呢,需要两个步骤:
- 获取所有商品对应的页面链接
- 根据链接载入页面,并提取需要的信息
这篇文章主要讨论如何实现第一个步骤,例如咱们希望把京东上面所有手机的页面爬下来
首先是登录到京东的手机产品页面,如图,
(http://list.jd.com/9987-653-655-0-0-0-0-0-0-0-1-1-1-1-1-72-4137-33.html)
从这张图我们找到两个线索,第一是京东上所有的手机产品有2008个;第二是这2008个产品分布在56页里
于是我们只需要把每一页的手机产品对应的页面链接爬下来,重复56次即可
在代码实现前,先了解下两个额外的知识,请自行百度
- 字符串的格式化:格式化输出字符串使用%运算符,通用的形式为"格式标记字符串"%要输出的值组
- XPath语言: 是在 XML 文档中查找信息的语言。可用来在 XML 文档中对元素和属性进行遍历。
from selenium import webdriverfrom selenium.common.exceptions import NoSuchElementExceptionimport codecsimport timejd_driver = webdriver.Chrome()f_jd = codecs.open("d:\\jd.txt","w+","utf-8")j = 1while j <= 55:t_begin = time.clock()jd_driver.get("http://list.jd.com/9987-653-655-0-0-0-0-0-0-0-1-1-%s-1-1-72-4137-33.html"%j)t_end = time.clock()print "open url cost:%f"%(t_end-t_begin)t_begin = time.clock()i = 0while 1:try:mb_href_element = jd_driver.find_element_by_xpath("//li[@index='%s']/div/div[@class='p-img']/a"%i)except (NoSuchElementException):breaki += 1mb_href = mb_href_element.get_attribute("href")f_jd.write(mb_href +"\n") t_end = time.clock()print "page %d cost %f"%(j,t_end-t_begin)j += 1jd_driver.quit()f_jd.close()
运行以上的程序,就可以获得所有的手机页面,下一篇文章,将重点介绍如何优化抓取的速度
这里可以先预告一下,程序的瓶颈主要集中在两个地方:
- 装载页面的时间。将尝试不同的浏览器以及多线程来提升
- XPath查询的时间。由于过多的引入值索引,总是要完全索引,导致查询性能很低
0 0
- Selenium入门(三)如何获取京东的商品列表
- 如何从京东商品里获取需要的信息
- Magento获取商品的评价列表(get product review)
- 【照虎画猫】京东首页商品菜单列表的实现
- 淘宝 获取商品列表流程
- ECSHOP获取当前分类下商品的品牌列表
- Selenium入门(二)如何爬虫爬到京东的价格
- 【爬虫】 通过关键字爬取淘宝商品列表信息 selenium 的 webdriverwait 和expected_conditions
- 23.商品列表(TabLayout的使用)
- 【Python】抓取京东列表页商品信息(selenium)
- 商品列表获取数据ajax clone 分页
- 京东价格监控软件开发技术探讨七:如何获取京东商品评价信息
- 京东价格监控软件开发技术探讨八:如何获取京东商品分类数据
- jQuery商品列表的收缩
- 简单的商品列表展示
- python爬虫三:获取一个网易用户的所有图片(selenium+phantomjs)
- 京东的商品列表页面侧滑菜单的分析
- Selenium获取input输入框中值的三种方法
- java中的comparable和comparator接口
- Spring Hibernate 整合项目案例之@Entity注解
- USACO Broken Necklace
- 二叉树(一)
- js正则表达式验证
- Selenium入门(三)如何获取京东的商品列表
- 从NI Multisim软件导出到Mentor Graphics PADS Layout软件之使用指南
- sprintf函数的使用
- hdu1019 Least Common Multiple
- 【直方图面积】Maximal Rectangle
- oracle超出了表空间users的空间限量问题
- 设计模式之策略模式
- Cinder概述(1) 20140405
- SateliteMenu的使用