如何使用Selenium Python读取表格数据?

3
以下是HTML表格源代码,对于selenium来读取其中的内容似乎非常复杂。有人能帮忙吗?使用selenium将这些数据读入Python中。
<div class="general_table">
    <div class="general_s">
        <div class="general_text1">Name</div>
        <div class="general_text2">Abhishek</div>
    </div>
    <div class="general_m">
        <div class="general_text1">Last Name</div>
        <div class="general_text2">Kulkarni</div>
    </div>
    <div class="general_s">
        <div class="general_text1">Phone</div>
        <div class="general_text2"> 13613123</div>
    </div>
    <div class="general_m">
        <div class="general_text1">Cell Phone</div>
        <div class="general_text2">82928091</div>
    </div>         
    <div class="general_s">
        <div class="general_text1">City</div>
        <div class="general_text2"></div>
    </div>
    <div class="general_m">
        <div class="general_text1">Model</div>
        <div class="general_text2"> DELL PERC H700</div>
    </div>
</div>
2个回答

3
使用Selenium WebDriver阅读这张表格时,XPath似乎是最简单的方法 -
我不太了解Python,所以代码可能有误,但思路应该正确 -
要查找general_table中的div标签数量,我们使用XPath - driver.find_elements_by_xpath(("//*[@class='general_table']/div"),它将返回一个大小为6的列表。
然后,您可以使用循环遍历每个元素 -
for(int i=1;i<=list.length;i++){
    String text1 = driver.find_element_by_xpath("//*[@class='general_table']/div["+i+"]/div[1]").text;
    String text2 = driver.find_element_by_xpath("//*[@class='general_table']/div["+i+"]/div[2]").text;
}

您可以通过这种方式阅读表格中的所有标签。

如果这个解决方案对您有帮助,请通过勾选我的答案将其标记为正确。 - Hari Reddy

1
使用selenium抓取页面源代码(这样您就可以在js / ajax处理后获得真实内容),然后使用BeautifulSoup之类的工具进行解析。
from bs4 import BeautifulSoup

soup = BeautifulSoup("""<div class="general_table">
    <div class="general_s">
        <div class="general_text1">Name</div>
        <div class="general_text2">Abhishek</div>
    </div>
    <div class="general_m">
        <div class="general_text1">Last Name</div>
        <div class="general_text2">Kulkarni</div>
    </div>
    <div class="general_s">
        <div class="general_text1">Phone</div>
        <div class="general_text2"> 13613123</div>
    </div>
    <div class="general_m">
        <div class="general_text1">Cell Phone</div>
        <div class="general_text2">82928091</div>
    </div>         
    <div class="general_s">
        <div class="general_text1">City</div>
        <div class="general_text2"></div>
    </div>
    <div class="general_m">
        <div class="general_text1">Model</div>
        <div class="general_text2"> DELL PERC H700</div>
    </div>
</div>""")

def tags(iterable):
    return filter(lambda x: not isinstance(x, basestring), iterable)

for table in soup.find_all('div', {'class': 'general_table'}):
    for line in tags(table.contents):
        for i, column in enumerate(tags(line.contents)):
            if column.string:
                print column.string.strip(),
            if i:
                print ',',
            else:
                print ':',
        print ''    

结果:

Name : Abhishek , 
Last Name : Kulkarni , 
Phone : 13613123 , 
Cell Phone : 82928091 , 
City : 
Model : DELL PERC H700 , 

谢谢Paulo,这个解决方案对我也有效,虽然使用Selenium获取源代码不是一个好主意..因此我会选择Hari的解决方案。 - Abhishek Kulkarni

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接