鱼C论坛

 找回密码
 立即注册
查看: 3049|回复: 10

关于selenium学习中遇到的问题

[复制链接]
发表于 2016-8-2 22:09:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
import selenium
from selenium import webdriver
import time

browser = webdriver.Chrome()
browser.get('http://product.pconline.com.cn/mobile/0s1.shtml')
time.sleep(3)
items = browser.find_element_by_id("JlistItems").find_elements_by_css_selector("div[class=\"item-wrap\"]")
title,price,subtitle,sore=[],[],[],[]
for item in items:
      title.append(item.find_element_by_xpath("//a[@class='item-title-name']").text)
      price.append(item.find_element_by_xpath('//div[@class="price price-now"]').text)
      subtitle.append(item.find_element_by_xpath('//span[@class="item-title-des"]').text)
      sore.append(item.find_element_by_xpath('//div[@class="score-num"]').text)

for i in title:
      print(i)
time.sleep(3)
browser.quit()

上述代码输出的结果是:
>>> ================================ RESTART ================================
>>>
华为Mate8/3GB+32GB版
华为Mate8/3GB+32GB版
华为Mate8/3GB+32GB版
华为Mate8/3GB+32GB版
华为Mate8/3GB+32GB版
华为Mate8/3GB+32GB版
华为Mate8/3GB+32GB版
华为Mate8/3GB+32GB版
华为Mate8/3GB+32GB版
华为Mate8/3GB+32GB版
华为Mate8/3GB+32GB版
华为Mate8/3GB+32GB版
华为Mate8/3GB+32GB版
华为Mate8/3GB+32GB版
华为Mate8/3GB+32GB版
华为Mate8/3GB+32GB版
华为Mate8/3GB+32GB版
华为Mate8/3GB+32GB版
华为Mate8/3GB+32GB版
华为Mate8/3GB+32GB版
华为Mate8/3GB+32GB版
华为Mate8/3GB+32GB版
华为Mate8/3GB+32GB版
华为Mate8/3GB+32GB版
华为Mate8/3GB+32GB版
华为Mate8/3GB+32GB版
华为Mate8/3GB+32GB版
>>>

表示很无解啊,输出的数量是对的,但是输出的结果却全都是一样的,我哪里写错了吗,求大神帮看看!
QQ截图20160802220833.jpg
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-8-2 22:11:24 | 显示全部楼层
求助
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-8-6 00:31:19 | 显示全部楼层
你把 items 的内容显示出来看一下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-8 10:17:50 | 显示全部楼层
SixPy 发表于 2016-8-6 00:31
你把 items 的内容显示出来看一下

直接输出items的内容是这样的:
[<selenium.webdriver.remote.webelement.WebElement (session="bb8486e5b5ba7ccb5d4b1560a093ae45", element="0.26436241624530377-2")>, <selenium.webdriver.remote.webelement.WebElement (session="bb8486e5b5ba7ccb5d4b1560a093ae45", element="0.26436241624530377-3")>, <selenium.webdriver.remote.webelement.WebElement (session="bb8486e5b5ba7ccb5d4b1560a093ae45", element="0.26436241624530377-4")>, <selenium.webdriver.remote.webelement.WebElement (session="bb8486e5b5ba7ccb5d4b1560a093ae45", element="0.26436241624530377-5")>, <selenium.webdriver.remote.webelement.WebElement (session="bb8486e5b5ba7ccb5d4b1560a093ae45", element="0.26436241624530377-6")>, <selenium.webdriver.remote.webelement.WebElement (session="bb8486e5b5ba7ccb5d4b1560a093ae45", element="0.26436241624530377-7")>, <selenium.webdriver.remote.webelement.WebElement (session="bb8486e5b5ba7ccb5d4b1560a093ae45", element="0.26436241624530377-8")>, <selenium.webdriver.remote.webelement.WebElement (session="bb8486e5b5ba7ccb5d4b1560a093ae45", element="0.26436241624530377-9")>, <selenium.webdriver.remote.webelement.WebElement (session="bb8486e5b5ba7ccb5d4b1560a093ae45", element="0.26436241624530377-10")>, <selenium.webdriver.remote.webelement.WebElement (session="bb8486e5b5ba7ccb5d4b1560a093ae45", element="0.26436241624530377-11")>, <selenium.webdriver.remote.webelement.WebElement (session="bb8486e5b5ba7ccb5d4b1560a093ae45", element="0.26436241624530377-12")>, <selenium.webdriver.remote.webelement.WebElement (session="bb8486e5b5ba7ccb5d4b1560a093ae45", element="0.26436241624530377-13")>, <selenium.webdriver.remote.webelement.WebElement (session="bb8486e5b5ba7ccb5d4b1560a093ae45", element="0.26436241624530377-14")>, <selenium.webdriver.remote.webelement.WebElement (session="bb8486e5b5ba7ccb5d4b1560a093ae45", element="0.26436241624530377-15")>, <selenium.webdriver.remote.webelement.WebElement (session="bb8486e5b5ba7ccb5d4b1560a093ae45", element="0.26436241624530377-16")>, <selenium.webdriver.remote.webelement.WebElement (session="bb8486e5b5ba7ccb5d4b1560a093ae45", element="0.26436241624530377-17")>, <selenium.webdriver.remote.webelement.WebElement (session="bb8486e5b5ba7ccb5d4b1560a093ae45", element="0.26436241624530377-18")>, <selenium.webdriver.remote.webelement.WebElement (session="bb8486e5b5ba7ccb5d4b1560a093ae45", element="0.26436241624530377-19")>, <selenium.webdriver.remote.webelement.WebElement (session="bb8486e5b5ba7ccb5d4b1560a093ae45", element="0.26436241624530377-20")>, <selenium.webdriver.remote.webelement.WebElement (session="bb8486e5b5ba7ccb5d4b1560a093ae45", element="0.26436241624530377-21")>, <selenium.webdriver.remote.webelement.WebElement (session="bb8486e5b5ba7ccb5d4b1560a093ae45", element="0.26436241624530377-22")>, <selenium.webdriver.remote.webelement.WebElement (session="bb8486e5b5ba7ccb5d4b1560a093ae45", element="0.26436241624530377-23")>, <selenium.webdriver.remote.webelement.WebElement (session="bb8486e5b5ba7ccb5d4b1560a093ae45", element="0.26436241624530377-24")>, <selenium.webdriver.remote.webelement.WebElement (session="bb8486e5b5ba7ccb5d4b1560a093ae45", element="0.26436241624530377-25")>, <selenium.webdriver.remote.webelement.WebElement (session="bb8486e5b5ba7ccb5d4b1560a093ae45", element="0.26436241624530377-26")>, <selenium.webdriver.remote.webelement.WebElement (session="bb8486e5b5ba7ccb5d4b1560a093ae45", element="0.26436241624530377-27")>, <selenium.webdriver.remote.webelement.WebElement (session="bb8486e5b5ba7ccb5d4b1560a093ae45", element="0.26436241624530377-28")>]
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-8 10:27:07 | 显示全部楼层
SixPy 发表于 2016-8-6 00:31
你把 items 的内容显示出来看一下

>>> items[3].find_element_by_xpath("//a[@class='item-title-name']").text
'华为Mate8/3GB+32GB版'
>>> items[3].text
'三星Galaxy S7 Edge 32GB 双侧面曲面屏,后置镜头采用独有的双核全像素技术,支持Samsung Pay\n4.0\n¥5688\n对比\n查底价'

当我直接输出items[3].text结果是对的。但是如果是items[3].find_element_by_xpath("//a[@class='item-title-name']").text,结果就不对了,就变成items[0]的结果了。会不会是selenium出bug了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-8-8 10:37:56 | 显示全部楼层
你去看一下 selenium 的 文档
也许是你理解有误
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-8 10:56:28 | 显示全部楼层
SixPy 发表于 2016-8-8 10:37
你去看一下 selenium 的 文档
也许是你理解有误

什么意思,可以稍微点拨一下吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-8-8 10:58:49 | 显示全部楼层
finding 发表于 2016-8-8 10:56
什么意思,可以稍微点拨一下吗

也许,items 用不着 xpath 寻址
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-8 11:05:00 | 显示全部楼层
SixPy 发表于 2016-8-8 10:58
也许,items 用不着 xpath 寻址

好吧,那他还提供这个方法。。。不过怎么写确实比较麻烦,也没必要,直接定位就好了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-8-8 11:44:31 | 显示全部楼层
  1. |  find_elements_by_xpath(self, xpath)
  2. |      Finds elements within the element by xpath.
  3. |      
  4. |      :Args:
  5. |          - xpath - xpath locator string.
  6. |      
  7. |      Note: The base path will be relative to this element's location.
  8. |      
  9. |      This will select all links under this element.
  10. |      
  11. |      ::
  12. |      
  13. |          myelement.find_elements_by_xpath(".//a")
  14. |      
  15. |      However, this will select all links in the page itself.
  16. |      
  17. |      ::
  18. |      
  19. |          myelement.find_elements_by_xpath("//a")
复制代码


看文档。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-8 21:10:49 | 显示全部楼层
谢谢各位版主帮忙解决问题
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-2-22 01:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表