Как получить эти значения с BeautifulSoup? - PullRequest
3 голосов
/ 10 мая 2010

У меня есть эта HTML-таблица:

<table>
    <tr>
        <td class="datax">a</td>
        <td class="datax">b</td>
        <td class="datax">c</td>
        <td class="datax">d</td>
    </tr>
    <tr>
        <td class="datax">e</td>
        <td class="datax">f</td>
        <td class="datax">g</td>
        <td class="datax">h</td>
    </tr>
</table>

Как получить второе и четвертое значение каждого <tr>? Если я сделаю:

bs.findAll('td', {'class':'datax'})

Я получаю:

        <td class="datax">a</td>
        <td class="datax">b</td>
        <td class="datax">c</td>
        <td class="datax">d</td>

        <td class="datax">e</td>
        <td class="datax">f</td>
        <td class="datax">g</td>
        <td class="datax">h</td>

это правильно! но я бы хотел получить такой результат:

        <td class="datax">b</td>
        <td class="datax">d</td>

        <td class="datax">f</td>
        <td class="datax">h</td>

Итак, я хочу получить следующие значения: -> b - d - f - h

(второй и четвертый <td> каждого <tr>)

Возможно ли это с модулем BeautifulSoup?

Большое спасибо!

Ответы [ 2 ]

5 голосов
/ 10 мая 2010

Это должно сделать это ~

final_values=[td.string for td in bs.findAll('td', {'class':'datax'})[1::2]]

(после уточнения комментария) для вашего конкретного случая это будет:

final_values=[td.b.a.string for td in bs.findAll('td', {'class':'datax'})[1::2]]
0 голосов
/ 10 мая 2010

Я знаю, используя HTQL, это просто:

. 2,4

-

HTQL думает только о поддержке COM. Вот полный пример в JavaScript:




var a = новый ActiveXObject ("HtqlCom.HtqlControl");
a.setUrl ( "C: \\ test_table.html");
a.setQuery ( "

2,4.");
for (a.moveFirst ();! a.isEOF (); a.moveNext ()) {
document.write (a.getValueByIndex (1));
}



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