通过xpath获取所有数据

时间:2016-03-25 13:15:11

标签: python html selenium xpath

网页有以下代码:

<table>
  <tbody>
   <tr>
    <td>
     <time data-timestamp="1458895194718" title="2016-03-25 11:39:54<small    class="milliseconds">.718</small>">11:39</time>
    </td>
    <td>
     <span class="invisep"><</span>
     <mark class="nickname" style="cursor:pointer;  color:#03DC03">usernickname</mark>
     <span class="invisep">></span>
    </td>
    <td>
      Action
      <a class="help" href="/link=56.280566,43.925091&z=17&pll=76.284566,63.924091" title="City, Country, 999999" onclick="window.selectPortalByLatLng(76.284566, 63.924091);return  false">PointName</a>
    </td>

我可以通过xpath time(11:39),Action或PointName找到。 这是我的代码:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.firefox.webdriver import FirefoxProfile

profile = FirefoxProfile('C:\\Users\username\AppData\Roaming\Mozilla\Firefox\Profiles\q1bvoou3.default')
driver = webdriver.Firefox(profile)
driver.get('https://www.url.com/')
driver.implicitly_wait(20) # seconds
element = driver.find_element_by_xpath('//html/body/div[3]/div[2]/table/tbody').text
print (element)

有没有办法获取所有数据?毫秒,颜色,坐标等。 感谢。

3 个答案:

答案 0 :(得分:0)

试试这个:

for i in driver.find_elements_by_xpath("//*[@type='submit']"):
    print (i.get_attribute("value"))

答案 1 :(得分:0)

问:有没有办法获取所有数据?毫秒,颜色,坐标等 第一:如果你想选择一个列表,find_element_by_xpath返回一个元素 find_elements_by_xpath

您的期望并不是很清楚:

要获取所有文本节点,您可以在tbody中尝试:
//html/body/div[3]/div[2]/table/tbody//text()
但颜色似乎是style属性的一部分。要获得您可能使用的所有属性:
 //html/body/div[3]/div[2]/table/tbody//@*

答案 2 :(得分:0)

您要查找的其他信息是页面中不同元素的属性。您需要为每个感兴趣的项目获取WebElement,并请求该属性。例如:

element = driver.find_element_by_css('mark.nickname')
print (element.get_attribute('style'))
对于具有此元素的表中的所有行,

将使用类“nickname”拉出所有“mark”元素的样式。然后,您将使用正则表达式从此样式中提取颜色。

作为另一个例子,坐标位于链接的onclick属性中的方法调用内:

linkelement = driver.find_element_by_css('a.help')
print (linkelement.get_attribute('onclick'))

因此,您必须解析该方法调用之外的坐标。