Использование Python и BeautifulSoup для разбора таблицы - PullRequest
1 голос
/ 21 июня 2011

Я пытаюсь получить доступ к контенту в определенных тэгах с помощью Python и BeautifulSoup.Я могу либо получить первый тег td, соответствующий критериям (с помощью find), либо все из них (с помощью findAll).

Теперь я могу просто использовать findAll, получить их все и получить желаемый контентиз них, но кажется, что это неэффективно (даже если я наложу ограничения на поиск).Есть ли какой-либо способ перейти к определенному тегу td, отвечающему критериям, которые я хочу?Скажите третий или десятый?

Вот мой код:

from __future__ import division
from __future__ import unicode_literals
from __future__ import print_function
from mechanize import Browser
from BeautifulSoup import BeautifulSoup

br = Browser()
url = "http://finance.yahoo.com/q/ks?s=goog+Key+Statistics"
page = br.open(url)
html = page.read()
soup = BeautifulSoup(html)
td = soup.findAll("td", {'class': 'yfnc_tablehead1'})

for x in range(len(td)):
    var1 = td[x]
    var2 = var1.contents[0]
    print(var2)

Ответы [ 2 ]

2 голосов
/ 21 июня 2011

Можно ли в любом случае перейти к определенному тегу td, отвечающему критериям, которые я хочу?Скажите третий или десятый?

Ну ...

all_tds = [td for td in soup.findAll("td", {'class': 'yfnc_tablehead1'})]

print all_tds[3]

... другого пути нет ..

1 голос
/ 21 июня 2011

find и findAll очень гибкие, BeautifulSoup.findAll документы говорят

5. Вы можете передать вызываемый объект который принимает объект Tag как единственный аргумент и возвращает логическое значение. каждый Отметить объект, который встречает findAll будет передан в этот объект, и если вызов возвращает True, то тег считается совпадающим.

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