python - 将表头分配为 Python 字典中的键

标签 python python-2.7 selenium xpath selenium-webdriver

我目前使用 Selenium 在 Python 中填充一个列表,其中包含所有表行值。

我现在想,在每行数据的末尾打一个断点,并使用表头作为键。我不确定如何最好地表示字典中的表数据。但我唯一的要求是我可以通过表和行标题查询它(行标题是每行中的第一个值)。

对于表...

<table class="confluenceTable tablesorter">
    <thead>
        <tr class="sortableHeader">
            <th data-column="0" class="confluenceTh sortableHeader tablesorter-headerSortDown">
                <div class="tablesorter-header-inner">First Name</div>
            </th>
            <th data-column="1" colspan="1" class="confluenceTh sortableHeader">
                <div class="tablesorter-header-inner">Last Name</div>
            </th>
            <th data-column="2" class="confluenceTh sortableHeader">
                <div class="tablesorter-header-inner">Function</div>
            </th>
        </tr>
    </thead>
    <tbody class="">
        <tr>
            <td colspan="1" class="confluenceTd">John</td>
            <td colspan="1" class="confluenceTd">Smith</td>
        </tr>
        <tr>
            <td colspan="1" class="confluenceTd"><span>Jane</span></td>
            <td colspan="1" class="confluenceTd"><span>Doe</span></td>
        </tr>
    </tbody>
</table>

我在我的简化表中包含了 colspan、类等,以防它们有用。

def get_test_data(driver):
    table = driver.find_element_by_xpath("//table")
    rawdata = []
    for td in table.find_elements_by_tag_name('td'):
        rawdata.append(td.text)
    pprint(rawdata)

用上面的python我可以得到

[u'John',
 u'Smith',
 u'Jane',
 u'Doe']

我想得到

  {
  "First Name": "John",
  "LastName": "Smith"
  },
  {
  "First Name": "Jane",
  "Last Name": "Doe"
  }

或者类似的东西,这样我就可以在字典中查询数据。

最佳答案

使用你的 html 片段我想出了:

assign_headers.py 的一部分

first_names  = map(lambda el: el.text, browser.find_elements_by_xpath('//tr/td[1]'))
second_names = map(lambda el: el.text, browser.find_elements_by_xpath('//tr/td[2]'))
headers      = map(lambda el: el.text, browser.find_elements_by_xpath('//th/div'))

print [{headers[0]: first_names[i], headers[1]: second_names[i]} for i in range(len(first_names))]

在行动中:

In [1]: run assign_headers.py
[{u'Last Name': u'Smith', u'First Name': u'John'}, {u'Last Name': u'Doe', u'First Name': u'Jane'}]

关于python - 将表头分配为 Python 字典中的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34422345/

相关文章:

java - 通过系统属性检查是否安装了 FirefoxDriver 或 ChromeDriver?

python - 如何在 Pandas 中调试 Cython 代码?

python - 如何在运行时结束python程序?

selenium - 通过 saucelabs 运行 testcafe 脚本时获取 "Failed to start Selenium listener."错误消息

python-2.7 - 使用 .ix 和 .isin 遍历文件

python - 添加计数器时如何保留我的原始字典

带有语句(__enter__ 和 __exit__)的 Python 无法调用函数

python - 如何在保留标题的同时翻转 csv 行顺序?

python - 如果列值具有字符串,则根据条件对数据框进行子集

python/clojure 相当于 mathematica 的 NestWhileList