从嵌套的无序html列表创建Pandas数据帧

时间:2018-05-07 18:23:57

标签: python pandas xpath nlp elementtree

我有一个无序列表的网页,我想把它们变成一个pandas数据帧,作为NLP工作流程的第一步。

import pandas as pd
from bs4 import BeautifulSoup
html = '''<html>
        <body>
          <ul>
              <li>
              Name
                    <ul>
                        <li>Many</li>
                        <li>Stories</li>
                    </ul>
                </li> 
          </ul>
          <ul>
              <li>
              More
              </li>
         </ul>
         <ul>
             <li>Stuff 
                     <ul>
                         <li>About</li>
                    </ul>
            </li>
        </ul>
        </body>
        </html>'''

 soup = BeautifulSoup(html, 'lxml')

目标是让每个顶级列表变成一个数据帧,看起来像这个输出:

   0    1     2
0 Name  Many  Stories
1 More  null  null
2 Stuff About null

我尝试使用以下代码获取所有列表项(包括子列表)

target = soup.find_all('ul')

但它会返回双倍输出:

[<li>
                   Name
                         <ul>
 <li>Many</li>
 <li>Stories</li>
 </ul>
 </li>, <li>Many</li>, <li>Stories</li>, <li>
                   More
                   </li>, <li>Stuff 
                          <ul>
 <li>About</li>
 </ul>
 </li>, <li>About</li>]

真的迷失在这里。谢谢。

0 个答案:

没有答案