Python + Selenium读取网页表格

发表于:2023-7-20 09:48

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Python热爱者    来源:CSDN

  1.获取表格元素:
  表格的结构一般以table标签开始,此函数是获取table元素的,一个网页中可能不止一个表格,此处返回表格元素的列表。
  def GetTableElements():
      '''获得table标签元素列表,方便选择合适的表格'''
      driver = GetDriver()
      # 参考:selenium 根据 tag名 选择元素  https://blog.csdn.net/weixin_41665637/article/details/111315408
      elements = driver.find_elements_by_tag_name('table')
      return elements
  2.获取表格头的列信息:
  返回值形如 [‘列1的名字’, ‘列2的名字’]
  def _GetHeadList(table):
      '''
      功能:返回表格列的名称列表
      参数:table:对应的表格元素
      '''
      thead = table.find_element_by_tag_name('thead')
      tr = thead.find_element_by_tag_name('tr')
      ths = tr.find_elements_by_tag_name('th')
      res = []
      for th in ths:
          res.append(th.text)
      return res
  3.读取一行里面的信息:
  其中heads就是从表头中获取的每一列的名字列表。
  def _GetOneRow(tr,heads):
      '''
      功能:取得一行的信息
      tr:当前行的tr元素
      heads:是一个字符串列表,表示每一列的名称
      返回值:返回一个字典,形如:{'Row1': value1, 'Row2':value2}
      '''
      res = {}
      tds = tr.find_elements_by_tag_name('td')
      for i,td in enumerate(tds):
          res[heads[i]] = td
      return res
  4.获取表格每一个单元格对象:
  def GetTable(table):
      '''
      功能:返回表格信息
      参数:table:对应的表格元素
      '''
      res = []
      # Python学习交流群:711312441 
      # 获得表格头
      heads = _GetHeadList(table)
       
      tbody = table.find_element_by_tag_name('tbody')
      trs = tbody.find_elements_by_tag_name('tr')
      for tr in trs:
          row = _GetOneRow(tr,heads)
          res.append(row)
      return res
  5.也可以把单元格对象转换成文本:
  def GetTableText(table):
      '''与GetTable函数相比,此函数把元素对象转换成文本'''
      res = []
      table = GetTable(table)
      for row in table:
          tmpRow = {}
          for key in row.keys():
              tmpRow[key]=row[key].text
          res.append(tmpRow)
      return res
  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号