硒将HREF拉出表中的TD

时间:2016-03-28 19:55:03

标签: python html selenium pandas

我正在从网页上读表,其中一个列中有一个链接。表就是这样的

<table id="GridView1">
    <tbody>
        <tr>
            ...
        </tr>
        <tr>
            <td>...</td>
            <td><a href="http://www.google.com/" target="_blank">Link</a></td>
            <td>...</td>
        </tr>
        ...
    </tbody>
</table>

我正在阅读这篇大熊猫Dataframe(版本0.16.0),在链接栏中只是说“Link”这个词,我希望在href中有实际的链接。

如果没有一种简单的方法可以通过大熊猫获取此功能,是否还有另一种方法可以简单地获取链接并手动填写它?

2 个答案:

答案 0 :(得分:3)

假设您事先不知道链接文本并给出HTML结构所提供的内容,我们可以编写一个CSS选择器:

links = driver.find_elements_by_css_selector("#GridView1 tbody tr td:nth-child(2) a")

然后通过href获取get_attribute()

print([link.get_attribute("href") for link in links])

答案 1 :(得分:1)

非常类似@alecxe提出的解决方案,但我发现更清楚。假设您拥有表ID并且只需要该表中的链接,以下内容将为您提供表中的href链接,并将其作为列添加到您的数据框中。

table = browser.find_element_by_id(table_id)
df = pd.read_html(table.get_attribute('outerHTML'), header=0)[0]
links = [link.get_attribute('href') for link in table.find_elements_by_tag_name('a')]
df['links'] = links