Узнайте значение строки, используя BeautifulSoup - PullRequest
0 голосов
/ 25 февраля 2020

Существует html код

</DIV>
   <CENTER><div id="div_errorh">#</div></CENTER>
   <table width="100%">
   <tr>
    <td width="74%" style="vertical-align:top;">
     <TABLE class="MainTable" CELLPADDING="3" CELLSPACING="0">
     <TBODY id="MAIN_TABLE">
     <TR><TH></TH><TH></TH><TH></TH>
     <TR class=Row2><TD ALIGN=LEFT class="" >String_1</TD><TD ALIGN=RIGHT class="" >Value of line 1</TD><TD ALIGN=LEFT></TD></TR>
<TR class=Row1><TD ALIGN=LEFT class="" >String_2</TD><TD ALIGN=RIGHT class="" >Value_of_line_2</TD><TD ALIGN=LEFT></TD></TR>
<TR class=Row2><TD ALIGN=LEFT class="" >String_3</TD><TD ALIGN=RIGHT class="" >Value_of_line_3</TD><TD ALIGN=LEFT><B><A 
<TR class=Row1><TD ALIGN=LEFT class="" >String_4</TD><TD ALIGN=RIGHT class="" >Value_of_line_4</TD><TD ALIGN=LEFT><B><A 
<TR class=Row2><TD ALIGN=LEFT class="" >String_5</TD><TD ALIGN=RIGHT class="" >Value_of_line_5</TD><TD ALIGN=LEFT></TD></TR>
<TR class=Row1><TD ALIGN=LEFT class="" >&nbsp;</TD><TD ALIGN=LEFT class="" ></TD><TD ALIGN=LEFT></TD></TR>

Мне нужно выяснить значение Value_of_line_5 , используя BeautifulSoup .

Я спрашиваю за помощь

Ответы [ 2 ]

0 голосов
/ 25 февраля 2020

Я не знаю, действительно ли твой тег HTML является неполным. Если это так, пожалуйста, попробуйте следующий код. Я заполнил тег HTML перед его извлечением.

from simplified_scrapy import SimplifiedDoc
html = '''
 <TABLE class="MainTable" CELLPADDING="3" CELLSPACING="0">
     <TBODY id="MAIN_TABLE">
     <TR><TH></TH><TH></TH><TH></TH>
     <TR class=Row2><TD ALIGN=LEFT class="" >String_1</TD><TD ALIGN=RIGHT class="" >Value of line 1</TD><TD ALIGN=LEFT></TD></TR>
<TR class=Row1><TD ALIGN=LEFT class="" >String_2</TD><TD ALIGN=RIGHT class="" >Value_of_line_2</TD><TD ALIGN=LEFT></TD></TR>
<TR class=Row2><TD ALIGN=LEFT class="" >String_3</TD><TD ALIGN=RIGHT class="" >Value_of_line_3</TD><TD ALIGN=LEFT><B><A 
<TR class=Row1><TD ALIGN=LEFT class="" >String_4</TD><TD ALIGN=RIGHT class="" >Value_of_line_4</TD><TD ALIGN=LEFT><B><A 
<TR class=Row2><TD ALIGN=LEFT class="" >String_5</TD><TD ALIGN=RIGHT class="" >Value_of_line_5</TD><TD ALIGN=LEFT></TD></TR>
<TR class=Row1><TD ALIGN=LEFT class="" >&nbsp;</TD><TD ALIGN=LEFT class="" ></TD><TD ALIGN=LEFT></TD></TR>
</TBODY>
'''
doc = SimplifiedDoc(html)
doc['html'] = doc.replaceReg(doc.html,'</TH>\s*<TR','</TH></TR><TR')
doc['html'] = doc.replaceReg(doc.html,'<A\s*<TR','<A></TR><TR')
trs = doc.selects('TBODY#MAIN_TABLE>TR') 
value = trs[5].TDs[1].text
print (value)

Результат:

Value_of_line_5
0 голосов
/ 25 февраля 2020

Это даст значения для 4 и 5, тогда вы можете проверить с помощью if_else:

from bs4 import BeautifulSoup
soup = BeautifulSoup(code, "html.parser")
a = soup.find_all('a')
for i in a:
    tds = i.find_all('td')
    print(tds[1].text)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...