Помогите разобрать теги <pre>с помощью BeautifulSoup - PullRequest
2 голосов
/ 01 июля 2011

Я пытаюсь проанализировать информацию с веб-сайта, используя BeautifulSoup и python. HTML выглядит следующим образом. Я хочу, чтобы мои проанализированные данные выглядели так:

Определение ID
Лизин.биосинтез - Burkholderia psuedomallei 17
... остальные данные в аналогичном месте (внутри тегов "pre" и вне тегов "a".

Как я могу это сделать?

<code><pre>ID                   Definition
    ----------------------------------------------------------------------------------------------------
<a href="/kegg-bin/show_pathway?bpm00300">bpm00300</a>             Lysine biosynthesis - Burkholderia pseudomallei 17 
<a href="/kegg-bin/show_pathway?bpm00330">bpm00330</a>             Arginine and proline metabolism - Burkholderia pse 
<a href="/kegg-bin/show_pathway?bpm01100">bpm01100</a>             Metabolic pathways - Burkholderia pseudomallei 171 
<a href="/kegg-bin/show_pathway?bpm01110">bpm01110</a>             Biosynthesis of secondary metabolites - Burkholder 

Я пытался:

y=soup.find('pre') #returns data between <pre> tags. Specific to KEGG
    for a in y:
        z =a.string

Это дало мне:

 ID                   Definition
----------------------------------------------------------------------------------------------------

Спасибо за помощь!

1 Ответ

1 голос
/ 01 июля 2011

BeautifulSoup () и методы его поиска возвращают вам иерархический объект дерева разбора , а не просто строку.Итерация по findChildren () на найденном узле делает то, что вы хотите (и пропускает строку заголовка):

for a in soup.find('pre').findChildren():
    z = a.string
...