BeautifulSoup, un dictionnaire d'un tableau HTML
Je suis en train de gratter la surface de la table de données à partir d'un site web.
Voici un exemple simple de la table:
t = '<html><table>' +\
'<tr><td class="label"> a </td> <td> 1 </td></tr>' +\
'<tr><td class="label"> b </td> <td> 2 </td></tr>' +\
'<tr><td class="label"> c </td> <td> 3 </td></tr>' +\
'<tr><td class="label"> d </td> <td> 4 </td></tr>' +\
'</table></html>'
Souhaité analyser le résultat est {' a ': ' 1 ', ' b ': ' 2 ', ' c ': ' 3 ', ' d ' : ' 4' }
C'est mon plus proche tentative à ce jour:
for tr in s.findAll('tr'):
k, v = BeautifulSoup(str(tr)).findAll('td')
d[str(k)] = str(v)
Résultat est:
{'<td class="label"> a </td>': '<td> 1 </td>', '<td class="label"> d </td>': '<td> 4 </td>', '<td class="label"> b </td>': '<td> 2 </td>', '<td class="label"> c </td>': '<td> 3 </td>'}
Je suis conscient de la text=True
paramètre de findAll()
mais je n'obtiens pas les résultats escomptés lorsque je l'utilise.
Je suis à l'aide de python 2.6 et BeautifulSoup3.
source d'informationauteur jon
Vous devez vous connecter pour publier un commentaire.
Essayez ceci:
Vous pouvez suivre la même démarche que mvillaressmais de l'améliorer un peu, à l'aide de Interprétations De La Liste:
Si vous êtes en grattant une table a un explicite "thead" et "tbody" tels que:
Vous pouvez utiliser les éléments suivants:
Ceci va produire:
P. S. C'est à l'aide de lxml.html. Si vous utilisez BeautifulSoup remplacer ".text_content()" avec ".chaîne de caractères" et ".cssselect" avec ".findAll".