Xpath как получить весь текст в теге - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть этот HTML-код:

<div id="m0" style="visibility:visible; display:block;">
 <table class="fl">
  <tr bgcolor="white"><td class="v px3"></td>
   <td class="ch">
     <a title="Id: NetViet" class="A3">NetViet</a></td>
   </tr>

<div id="m1" style="visibility:visible; display:block;">
 <table class="fl">
  <td class="ch">
   <A class="A3" title="Id: Kino Polska Muzyka" HREF="http://www.kinopolskamuzyka.pl/" TARGET="_blank">Kino Polska Muzyka</A>
 </tr>
  <td class="ch">
   <i>HBO3 HD</i></td>
 </tr>
  <td class="ch"> Faktura</td>
 </tr>

Мой xpath: tree.xpath('//div[@id="%s"]/table[@class= "fl"]/tr/td[@class="ch"]/a/text()'%div)

, но он не дает мне все каналы.Я хочу получить весь текст в <td class="ch">, результат, который я хочу получить:

[['NetViet'],['Kino Polska Muzyka','HB03','Faktura']]

Есть идеи?Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 26 февраля 2019

Почему бы не использовать селекторы css для таргетинга элементов тега td с этим классом?Для этого типа выбора это скорее всего, чем xpath.

from bs4 import BeautifulSoup as bs

html = '''
<div id="m0" style="visibility:visible; display:block;">
 <table class="fl">
  <tr bgcolor="white"><td class="v px3"></td>
   <td class="ch">
     <a title="Id: NetViet" class="A3">NetViet</a></td>
   </tr>

<div id="m1" style="visibility:visible; display:block;">
 <table class="fl">
  <td class="ch">
   <A class="A3" title="Id: Kino Polska Muzyka" HREF="http://www.kinopolskamuzyka.pl/" TARGET="_blank">Kino Polska Muzyka</A>
 </tr>
  <td class="ch">
   <i>HBO3 HD</i></td>
 </tr>
  <td class="ch"> Faktura</td>
 </tr>
 '''

soup = bs(html, 'lxml')
items = [item.text.strip() for item in soup.select('td.ch')]
print(items)
0 голосов
/ 26 февраля 2019

Помимо вашей испорченной структуры html, удалите узлы 'tr' и 'a' из своего xpath, потому что не каждый 'td' окружен ими.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...