Find index of tag with certain text in beautifulsoup/python

落花浮王杯 提交于 2020-01-17 05:01:09

问题


I have a simple 4x2 html table that contains information about a property.

I'm trying to extract the value 1972, which is under the column heading of Year Built. If I find all the tags td, how do I extract the index of the tag that contains the text Year Built?

Because once I find that index, I can just add 4 to get to the tag that contains the value 1972.

Here is the 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>

For example I know that if my input is index 2 and my output is text of that tag Year Built, I can just do this:

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

But how do I use input of text Year Built to get output of index 2?


回答1:


If your table has a static scheme, it is better using row and column indexes. Try this:

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

Alternatively if you just want to find index number of the tag containing "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



回答2:


Convert it to dict and get the value:

from bs4 import BeautifulSoup
table_data = [[cell.text for cell in row("td")] for row in BeautifulSoup(myhtml)("tr")]
dict = dict(zip(table_data[0], table_data[1]))
print dict['Year Built']



回答3:


Your content is stored in filename.
Please try:

In [3]: soup = BeautifulSoup(open("filename"))
In [4]: print soup.find_all('td')[2].string
Year Built


来源:https://stackoverflow.com/questions/33095297/find-index-of-tag-with-certain-text-in-beautifulsoup-python

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!