在HTML中的表格中刮取td元素

时间:2016-08-11 08:02:37

标签: html python-3.x selenium beautifulsoup

我必须从html中的表中的td元素中获取Text,如下所示:

<table  id="gvrslt" >
    <tbody><tr style="font-size:10pt;">
        <th scope="col">Sem</th><th scope="col" style="font-size:X-Small;">Total Obtained Marks</th><th scope="col" style="font-size:X-Small;">Max Total Marks</th><th scope="col">Result</th>
    </tr>
    <tr>
        <td align="center">VI</td>
        <td align="center">458</td>
        <td align="center">550</td>
        <td align="center">PASSED</td>
    </tr>
</tbody></table>

我想从表格中抓取458,其中包含更多此类td元素。问题是在进入结果之前&#39;页面和获取上述HTML,我必须输入一些凭据,然后显示结果页面右键单击禁用。现在我可以得到结果的来源&#39;页面通过driver.page_source,但当我尝试通过webdriver查找table元素时,它会搜索我输入凭据的页面,而不是实际结果&#39;页。有没有办法搜索driver.page_source tabletd元素

这是我的代码:

html=driver.page_source

soup = BeautifulSoup(html)
table=soup.find_all('table',id='gvrslt')

print(table)

3 个答案:

答案 0 :(得分:1)

如果您想直接获取文本,可以使用css定位器直接转到第二个td,而不是使用该表。

table[id='gvrslt'] td:nth-of-type(2)

nth-of-type为您提供第二个td元素

答案 1 :(得分:0)

在这种情况下尝试使用Xpath:

//table[@id='gvrslt']//td[index]

使用索引的td

答案 2 :(得分:0)

我不熟悉使用python的selenium。你尝试的是使用xpath找到值。

下面的C#是代码。看看它是否可以以任何可能的方式解决你。

IWebElement tdCell = driver.FindElement(By.XPath("//table[@id='']/tbody/tr[2]/td[2]"));
string valueOfTd = tdCell.Text;