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,没有代码,在问题中没有期望的结果。我已经在假设下回答了,不能用提供的做得更好。是的,非常感谢你的帮助。我根据你的建议想出了解决办法。