2011-03-05 2 views
0
soup = BeautifulSoup(html).findAll('div', 'thread') 
    for i in soup: 
    print i 

Je ne prends que cette partie du code parce que c'est là où je suis coincé dans.Itère en Python et BeautifulSoup

soupe retourne une liste, j'ai essayé d'utiliser « » .join() avoir une chaîne littérale et cela n'a pas fonctionné, car on attend une chaîne, pas une étiquette. Je suppose que c'est une sorte de bug. Itérer, il imprime sur l'écran toute la liste sans virgule.

Mais ce que je veux est d'obtenir un contenu href intérieur div cass = "fil"

J'ai essayé beaucoup de choses comme

soup = BeautifulSoup(html).findAll('div', 'thread') 
    for i in soup: 
    print BeautifulSoup(i)('a')['href'] 

Le dernier code me donne l'objet 'NoneType' est pas callabe. J'essaye beaucoup de combinaisons mais je suis en effet coincé dedans, je ne peux pas l'avoir du tout. Je ne sais pas quoi faire après de nombreux essais ratés. C'est frustrant.

+1

Remplacez les parenthèses autour de 'a' par des crochets. Est-ce que ça marche maintenant? –

Répondre

1

Il devrait être quelque chose comme
divs = BeautifulSoup(html).findAll('div','thread')
for div in divs:
print div.find('a').attr['href'] // may it be map(a.attrs)['href'], i dont remember now

0

jeter un oeil à la documentation de ce module/classe (http://www.crummy.com/software/BeautifulSoup/documentation.html) - le second argument pour findAll est un objet json, pas une chaîne. avez-vous essayé ceci à la place:

BeautifulSoup(html).findAll('div', { 'class': 'thread' }) 
Questions connexes