2013-07-20 5 views
1

У меня есть суп с содержанием, как следующийBeautifulSoup - извлечение ссылки в DIV

многих дивов, те, кто меня интересует являются, которые имеют класс «Foo»

в каждом DIV, есть много ссылок и другого контента, Я заинтересован во второй ссылке (второго <a> </a>) => это всегда второй Я хочу, чтобы захватить ссылку (в HREF атрибута) и текст между второй ссылкой тегом <a> </a>

например:

<div class ="foo"> 
    <a href ="http://example.com"> </a> 
    <a href ="http://example2.com"> Title here </a> 
</div> 

<div class ="foo"> 
    <a href ="http://example3.com"> </a> 
    <a href ="http://example4.com"> Title 2 here </a> 
</div> 

здесь я хочу получить:

Название здесь =>http://example2.com

Название 2 здесь =>http://example4.com

Я пробовал писать код:

soup.findAll("div", { "class" : "foo" }) 

но это возвращает список со всеми div и их содержимым, и я не знаю, как идти дальше

спасибо :)

ответ

6

итерацию div с и найти a там.

from bs4 import BeautifulSoup 

example = ''' 
<div class ="foo"> 
    <a href ="http://example.com"> </a> 
    <a href ="http://example2.com"> Title here </a> 
</div> 

<div class ="foo"> 
    <a href ="http://example3.com"> </a> 
    <a href ="http://example4.com"> Title 2 here </a> 
''' 

soup = BeautifulSoup(example) 
for div in soup.findAll('div', {'class': 'foo'}): 
    a = div.findAll('a')[1] 
    print a.text.strip(), '=>', a.attrs['href'] 
+0

Да, это сработало отлично :) Большое спасибо :) – Merna

+0

работает для меня тоже, спасибо –