Python: как извлечь содержимое столбца в таблице - PullRequest
3 голосов
/ 20 февраля 2012

У меня есть такая структура HTML:

<div>
    <table>
       <tbody>
          <tr>
            <td>stuff</td>
          </tr>
          <tr>
            <td>
              <div>The content I want</div> 
           </td>
           </tr>
        </tbody>
      </table>
</div>

Как мне получить «нужный контент» и удалить все HTML-теги?

Спасибо

Ответы [ 4 ]

8 голосов
/ 20 февраля 2012

Использование BeautifulSoup , например,

>>> from BeautifulSoup import BeautifulSoup as bs
>>> text = """<div>
...     <table>
...        <tbody>
...           <tr>
...             <td>stuff</td>
...           </tr>
...           <tr>
...             <td>
...               <div>The content I want</div> 
...            </td>
...            </tr>
...         </tbody>
...       </table>
... </div>"""
>>> a = bs(text)

Поскольку все теги <tr> имеют некоторый контент и вам нужны данные из строки second , вы не можете просто использовать a.text, но нужно сделать что-то более сложное:

>>> a.table.tbody.findAll("tr")[1].div.text
u'The content I want'

Или, если на самом деле есть только один тег <div> в строках таблицы (<tr>), вы также можете просто просмотреть теги, например:

>>> a.table.tbody.div.text
u'The content I want'

Или вы можете использовать html-анализатор из lxml модуля следующим образом:

>>> from lxml import html
>>> t = html.fromstring(text)
>>> t.xpath("table/tbody/tr[2]/td/div")[0].text
'The content I want'
1 голос
/ 20 февраля 2012

Лично я много потрудился и использую Firebug (очень популярное дополнение для Firefox) для проверки html и макета сайта, а затем использую BeautifulSoup ( Библиотека Python, широко используемая для сбора информации с веб-сайтов). Оба инструмента справедливо дополняют друг друга.

0 голосов
/ 20 февраля 2012

Используйте синтаксический анализатор XML, например lxml.Вам не нужно ничего удалять.Вы просто извлечете данные из этого деления.

Поскольку у вас есть только один div, допустимый запрос XPath может быть //div

Каким бы элегантным и простым не казался BeautifulSoup,оно не зависит от языка, как выражения XPath.

0 голосов
/ 20 февраля 2012

Взгляните на BeautifulSoup , это действительно отличная библиотека для анализа HTML / XML. Документы довольно хороши, и есть примеры того, как извлечь определенные теги.

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