【问题标题】:Python + Selenium to read html tablePython + Selenium 读取 html 表格
【发布时间】:2019-05-12 23:56:02
【问题描述】:

我正在尝试从一个没有 Id 的表中获取数据,我在使用 Python 和 Selenium 时似乎无法搜索。下面是 HTML 的 sn-p,我正在尝试获取名称,名称后面还有其他行,但我只是在这里显示名称。有什么想法可以让我遍历所有这些条目并获取它们的值。

我尝试了一些搜索 Div 类的示例,但无法使其正常工作。下面是我试图搜索的原始 HTML。

<div class="block-content-body clear-block">
    <div class="inline-block" style="border-top:2px solid #50afb1; padding:0px;">
        <div class="table-block standard no-plumb-line">
            <table cellpadding="0" cellspacing="0">
            <tbody><tr>
            <td id="" style="padding-left:4px;padding-bottom:2px;height:25px;vertical-align:middle">             
            <div>
            Name</div> 
            </td>
        <td id="" class="text-center" style="padding-left:4px;padding-bottom:2px;height:25px;vertical-align:middle">

            <div>
                <strong>
                     David     
               </strong>
            </div>
            </td>
    </tr>

我想获取名称字段和值大卫。像地址行 1 和 2 等下还有其他字段。我想得到所有这些。

我的代码如下:

elements = driver.find_elements_by_xpath("//div[@class='table-block standard no-plumb-line']")
    print(elements)


    for num in (1,elements.length):

        text1 = driver.find_element_by_xpath("//*[@class='table-block standard no-plumb-line']/div["+num+"]/div[1]").text
        text2 = driver.find_element_by_xpath("//*[@class='table-block standard no-plumb-line']/div["+num+"]/div[2]").text        
        print(text1)
        print(text2)

【问题讨论】:

    标签: python selenium


    【解决方案1】:

    这是具有所需 xpath 的脚本,它将提供 Name : Value 对。

    rows = driver.find_elements_by_xpath("//div[@class='table-block standard no-plumb-line']/table//tr")
    
    for rowNum in range(len(rows)):
        nameCols = driver.find_elements_by_xpath("//div[@class='table-block standard no-plumb-line']/table//tr[" + str(rowNum+1) + "]/td[descendant::div[not(strong)]]")
        for col in nameCols:
            name = col.text
            value = col.find_element_by_xpath("./following-sibling::td//strong").text
            print (name + " : " + value)
    

    【讨论】:

    • 用截图更新了答案,不知道为什么它不适合你。
    • 啊要清楚,我希望能够只扫描您的示例中的表格,您专门寻找“名称”。该表还有其他字段,我不知道它们的名称,因此我需要一个扫描表并显示字段名称和值的解决方案。所以 name 和 david 是一个字段和值对。
    • 每行中是否有多个包含名称和值的列?还是具有单个名称、值的多行?
    • 每行中有多个列名和值。
    • 检查更新的答案,它将为您提供name : value 对作为输出。
    猜你喜欢
    • 2019-10-30
    • 2017-05-04
    • 2018-06-30
    • 1970-01-01
    • 1970-01-01
    • 2020-02-17
    • 1970-01-01
    • 2019-10-12
    • 1970-01-01
    相关资源
    最近更新 更多