【问题标题】:Scraping td elements in a table in HTML在 HTML 中的表格中抓取 td 元素
【发布时间】:2016-08-11 08:02:37
【问题描述】:

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

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

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

这是我的代码:

html=driver.page_source

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

print(table)

【问题讨论】:

  • 您的登录可能不成功
  • @PadraicCunningham 如果不是,我不会查看我的结果
  • 所以您在 driver.page_source 中看到了表格?
  • @PadraicCunningham 是的

标签: html python-3.x selenium beautifulsoup


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

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

    用你的索引 td

    【讨论】:

    【解决方案3】:

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

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

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

    【讨论】:

    • 问题是 webdriver 搜索我输入凭据的页面,而不是禁用右键单击的实际结果页面。
    • 如果您的实际结果在不同的选项卡或窗口中,那么您必须切换窗口。否则请等待页面加载,然后重试。
    • 实际结果在同一个窗口中打开,然后我使用driver.page_source 获取源代码,结果嵌入在表格中。我应该如何在这个来源中搜索表格内容?
    • 抱歉我不知道driver.page_sourcesoup = BeautifulSoup(html),一般我直接用driver.FindElement()定位元素。
    猜你喜欢
    • 2016-02-17
    • 2010-10-26
    • 2017-02-27
    • 2014-05-04
    • 1970-01-01
    • 2010-09-14
    • 2013-03-08
    • 2021-07-06
    • 2018-12-27
    相关资源
    最近更新 更多