2015-06-24 4 views
2

Есть ли способ получить первый результат от for i soup.select(table)? Мне просто нужна первая таблица, каждая таблица после нее должна быть проигнорирована. За кодом следует оператор if: if i.find('th', text = 'Foo'):Soup.select, получить только первый результат назад

TLDR;

Ищете что-то вроде этого: if i[0].find('th', text = 'Foo'):

+0

Используйте 'soup.find (« table »). Find ('th', text = 'Foo')', чтобы получить первый –

+0

@PadraicCunningham. Затем объект перестает быть итерируемым. –

+0

@BobWassermann, если я не ошибаюсь, вы может создать из него еще один суп-объект. – Rishav

ответ

2

Один из способов заключается в break сразу после первой итерации:

for i in soup.select('table'): 
    if i.find('th', text = 'Foo'): 
     ... 
    break 

Еще один заключается в методах цепи, и поймать исключение, если элемент не найден:

try: 
    el = soup.select('table')[0].find('th', text='Foo') 
except AttributeError, TypeError: 
    print('element not found') 

Примечание: soup.select('table')[0] и soup.find('table') дают тот же результат

+0

Ваш ответ лучше. – Rishav

Смежные вопросы