python - 在beautifulsoup/python中查找带有特定文本的标签索引

标签 python html web-scraping beautifulsoup

我有一个简单的 4x2 html 表,其中包含有关属性的信息。

我正在尝试提取值 1972,它位于 Year Built 的列标题下。如果我找到所有标签 td,如何提取包含文本 Year Built 的标签的索引?

因为一旦找到该索引,我只需添加 4 即可获取包含值 1972 的标记。

这里是html:

<table>
    <tbody>
        <tr>
            <td>Building</td>
            <td>Type</td>
            <td>Year Built</td>
            <td>Sq. Ft.</td>
        </tr>
        <tr>
            <td>R01</td>
            <td>DWELL</td>
            <td>1972</td>
            <td>1166</td>
        </tr>   
    </tbody>
</table>

例如,我知道如果我的输入是索引 2 并且我的输出是该标签 Year Built 的文本,我可以这样做:

from bs4 import BeautifulSoup
soup = BeautifulSoup(myhtml)
td_list = soup.find_all('td')
print td_list[2].text

但是如何使用文本输入 Year Built 来获得索引 2 的输出?

最佳答案

如果您的表有静态方案,最好使用行和列索引。试试这个:

rows = soup.find("table").find("tbody").find_all("tr")
print rows[1].find_all("td")[2].get_text()

或者,如果您只想查找包含“Year Built”的标签的索引号:

from bs4 import BeautifulSoup
soup = BeautifulSoup(myhtml)
td_list = soup.find_all('td')
i = 0
for elem in td_list:
    if elem.text == 'Year Built':
        ind = i
    i += 1
print td_list[ind].text

关于python - 在beautifulsoup/python中查找带有特定文本的标签索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33095297/

相关文章:

python - 打印 "find_all"(使用 bs4 库)的结果返回一个空列表(但我引用的类存在)

python - 我怎样才能在 <span> </span> 使用 python splinter lib 之间获取文本

python - Pandas DataFrame,如何删除总和为 0 的所有列和行

javascript - 在ajax Jquery中发送多部分数据

python - 通过selenium动态创建一个新元素

javascript - 让 jquery 处理动态内容

javascript - 从文本输入中删除自动完成功能

python - 改变形状(专业版)

Python 套接字 GetAddrInfo (GAI) 错误

python - Pandas : Pivot row into column