Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 硒从表中的TD中拉出_Python_Html_Selenium_Pandas - Fatal编程技术网

Python 硒从表中的TD中拉出

Python 硒从表中的TD中拉出,python,html,selenium,pandas,Python,Html,Selenium,Pandas,我正在从网页上读取一个表,其中一列有一个链接。桌子是这样的 <table id="GridView1"> <tbody> <tr> ... </tr> <tr> <td>...</td> <td><a href="http://www.google.com/" targ

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

<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>

...
...
...
...
我将此作为熊猫数据帧(版本0.16.0)阅读,在带有链接的列中,它只显示了“链接”一词,我希望在href中有实际的链接


如果没有一种简单的方法可以通过pandas实现这一点,那么有没有另一种方法可以简单地获取链接并手动填写?

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

links = driver.find_elements_by_css_selector("#GridView1 tbody tr td:nth-child(2) a")
然后通过
获取属性()
获取
href


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

links = driver.find_elements_by_css_selector("#GridView1 tbody tr td:nth-child(2) a")
然后通过
获取属性()
获取
href


与@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

与@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

如果我理解正确,您就必须知道孩子在哪一行和哪一列,然后逐个循环以分别获取它们?@dlwlrma,alecxe的选择器将遍历每一行和每一列,并选择每个
第二列中的所有
。根据您的html,假设所有
都将嵌套在
2
nd td中可能是安全的,因此我认为这是一个安全的解决方案,谢谢。这是一个猜谜游戏——没有完整的HTML,没有代码,在问题中没有期望的结果。我已经在假设下回答了,不能用提供的做得更好。是的,非常感谢你的帮助。我根据你的建议提出了我的解决方案。如果我理解正确,你必须知道孩子在哪一行和哪一列,然后逐个循环以分别获得它们?@dlwlrma,alecxe的选择器将遍历每一行和每一列,然后选择每个
2
nd列中的所有
。根据您的html,假设所有
都将嵌套在
2
nd td中可能是安全的,因此我认为这是一个安全的解决方案,谢谢。这是一个猜谜游戏——没有完整的HTML,没有代码,在问题中没有期望的结果。我已经在假设下回答了,不能用提供的做得更好。是的,非常感谢你的帮助。我根据你的建议想出了解决办法。