ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

13. table定位

2019-08-05 21:04:33  阅读:145  来源: 互联网

标签:定位 13 name text driver tr table find


<!DOCTYPE html> 
<meta charset="UTF-8"> 
<!-- for HTML5 --> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<html> 
    <head> 
        <title>成绩单</title>
    </head>
    <body> 
        <table border="1" id="myTable"> 
            <tr> 
                <th>学号</th>
                 <th>姓名</th> 
                 <th>成绩</th> 
             </tr> 
             <tr> 
                 <td>2019001</td>
                 <td>张三</td> 
                 <td>96</td>
             </tr> 
             <tr> 
                 <td>2019002</td> 
                 <td>李四</td> 
                 <td>82</td>
            </tr> 
        </table> 
    </body> 
</html>

以上为一个简单的成绩单表格

通过selenium+python实现读取table中cell的值的思路

  • 方法一:
    1. 通过id,name等元素属性定位到table标签,即上图中的<table id="my table" border="1">
    2. 获取table中总的列数,即<tr></tr>的对数
    3. 获取table中总的行数,即每一个<tr>下的<th>标签数,对应上表的“学号,姓名,成绩”
    4. 获取table表中单个cell的值
    5. from selenium import webdriver
      import time
      url='file:///D:/Documents/My%20py/table.html'
      driver=webdriver.Firefox()
      driver.get(url)
      time.sleep(5)
      #根据id定位到table标签
      table1=driver.find_element_by_id('myTable')
      #根据tag name定位到tr,即表格总行数,包含标题
      table_rows=driver.find_elements_by_tag_name('tr')
      R=len(table_rows)
      print (R)
      #在table中找到第一个tr,下面所有的th,即为table总列数
      table_cols=table_rows[0].find_elements_by_tag_name('th')
      S=len(table_cols)
      print (S)
      #获取某个单元格的文本值:如获取第二行第三列的text(不算标题行)
      cell=table_rows[2].find_elements_by_tag_name('td')[2].text
      print(cell)
  •  方法二:根据XPath/CSS直接定位table并读取cell的值
      • from selenium import webdriver
        import time
        url='file:///D:/Documents/My%20py/table.html'
        driver=webdriver.Firefox()
        driver.get(url)
        time.sleep(5)
        #使用xpath定位到第二行第三列的text
        info=driver.find_elements_by_xpath(".//*[@id='myTable']/tbody/tr[3]/td[3]")
        '''
        #使用css定位到第二行第三列的text
        info=driver.find_elements_by_css_selector('#myTable > tbody:nth-child(1) > tr:nth-child(3) > td:nth-child(3)')'''
        #上面使用css或者xpath定位获取的都是结果合集,需要指定到具体位置,如info[0]
        T=info[0].text
        print (T)

         

 

标签:定位,13,name,text,driver,tr,table,find
来源: https://www.cnblogs.com/Arcy/p/11305447.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有