代码之家  ›  专栏  ›  技术社区  ›  jay

Python:使用Beautifulsoup和pandas改进迭代工作流?

  •  -1
  • jay  · 技术社区  · 2 年前

    乡亲们

    我正在从文档中提取一些句子,并用BeautifulSoup和pandas制作一个数据框架,如下所示。有一些迭代,所以我认为它会以一种更好的方式编写,就像专业版一样。你能帮忙开发这些代码行吗?非常感谢。

    import pandas as pd
    from bs4 import BeautifulSoup
    
    bs = BeautifulSoup(html, 'html.parser')
    
    t1 = bs.find_all('h1')[1].text.replace('_room1',"")
    t2 = bs.find_all('h1')[2].text.replace('_room1',"") 
    t3 = bs.find_all('h1')[3].text.replace('_room1',"")
    t4 = bs.find_all('h1')[4].text.replace('_room1',"")
    
    p1 = bs.find_all('p')[3].text
    p2 = bs.find_all('p')[4].text + bs.find_all('p')[5].text + bs.find_all('p')[6].text + bs.find_all('p')[7].text
    p3 = bs.find_all('p')[8].text
    p4 = bs.find_all('p')[9].text
    
    
    data = {t1: p1,
          t2: p2,
          t3: p3,
          t4: p4}
    
    df = pd.DataFrame(data, index=[0])
    
    df
    
    1 回复  |  直到 2 年前
        1
  •  1
  •   Jon Clements    2 年前

    一次从你的H1和P中获取文本怎么样:

    h1s = [h1.text for h1 in bs.select('h1')[:4]]
    ps =  [p.text for p in bs.select('p')]
    
    df = pd.DataFrame({
        h1: p
        for h1, p in zip(h1s, [ps[3], ''.join(ps[4:7]), ps[8], ps[9])
    }).T