Python 获取NavigatableList的第二个元素

Python 获取NavigatableList的第二个元素,python,beautifulsoup,Python,Beautifulsoup,这是html: <table> <tr><td>1 EUR</td><td>4,2989</td></tr> <tr><td>1 USD</td><td>3,7575</td></tr> <tr><td>1 CHF</td><td>3,8245</td></tr> <

这是html:

<table>
<tr><td>1 EUR</td><td>4,2989</td></tr>
<tr><td>1 USD</td><td>3,7575</td></tr>
<tr><td>1 CHF</td><td>3,8245</td></tr>
<tr><td>1 GBP</td><td>4,7907</td></tr>
<tr><td>100 JPY</td><td>3,4727</td></tr>
</table>
错误

错误

错误

错误


请记住,这些数字是字符串,在将它们转换为浮点数之前,首先需要对它们进行转换,我认为您之所以会出现错误,是因为
.children
还将包含诸如“\n”之类的行分隔符,这些行分隔符将被视为
bs4.element.navigablesting。
如果您将其视为标记,则最有可能得到
AttributeError:

import bs4
from bs4 import BeautifulSoup
html="""
<table>
<tr><td>1 EUR</td><td>4,2989</td></tr>
<tr><td>1 USD</td><td>3,7575</td></tr>
<tr><td>1 CHF</td><td>3,8245</td></tr>
<tr><td>1 GBP</td><td>4,7907</td></tr>
<tr><td>100 JPY</td><td>3,4727</td></tr>
</table>
"""
soup=BeautifulSoup(html,'html.parser')
table=soup.find('table')
for child in table.children:
    print(repr(child))
for c in soup.children:
    print(c.find("td")[1])
for c in soup.children:
    for cc in c.children:
        print(cc)
for c in soup.children:
    print(c.next_sibling)
from bs4 import BeautifulSoup

soup = BeautifulSoup("""<table>
<tr><td>1 EUR</td><td>4,2989</td></tr>
<tr><td>1 USD</td><td>3,7575</td></tr>
<tr><td>1 CHF</td><td>3,8245</td></tr>
<tr><td>1 GBP</td><td>4,7907</td></tr>
<tr><td>100 JPY</td><td>3,4727</td></tr>
</table>""")
for x in soup.find_all('tr'): # Iterate over tr tags
    print(x.find_all('td')[1].text) # find the second td tag and get its text

# Ouptput: 4,2989 3,7575 3,8245 4,7907 3,4727
import bs4
from bs4 import BeautifulSoup
html="""
<table>
<tr><td>1 EUR</td><td>4,2989</td></tr>
<tr><td>1 USD</td><td>3,7575</td></tr>
<tr><td>1 CHF</td><td>3,8245</td></tr>
<tr><td>1 GBP</td><td>4,7907</td></tr>
<tr><td>100 JPY</td><td>3,4727</td></tr>
</table>
"""
soup=BeautifulSoup(html,'html.parser')
table=soup.find('table')
for child in table.children:
    print(repr(child))
'\n'
<tr><td>1 EUR</td><td>4,2989</td></tr>
'\n'
<tr><td>1 USD</td><td>3,7575</td></tr>
'\n'
<tr><td>1 CHF</td><td>3,8245</td></tr>
'\n'
<tr><td>1 GBP</td><td>4,7907</td></tr>
'\n'
<tr><td>100 JPY</td><td>3,4727</td></tr>
'\n'
import bs4
from bs4 import BeautifulSoup
html="""
<table>
<tr><td>1 EUR</td><td>4,2989</td></tr>
<tr><td>1 USD</td><td>3,7575</td></tr>
<tr><td>1 CHF</td><td>3,8245</td></tr>
<tr><td>1 GBP</td><td>4,7907</td></tr>
<tr><td>100 JPY</td><td>3,4727</td></tr>
</table>
"""
soup=BeautifulSoup(html,'html.parser')
table=soup.find('table')
for child in table.children:
    if type(child) is not bs4.element.NavigableString:
        print(child.findAll('td')[1].text)
4,2989
3,7575
3,8245
4,7907
3,4727