【问题标题】:Beautiful Soup - making a list美丽的汤 - 制作清单
【发布时间】:2020-07-15 18:00:02
【问题描述】:

几天来,我一直在尝试将一个简单的 html 结构刮到一个列表中以制作一个数据框。如果是 html 表格,我没有问题。我正在使用这样的结构:

   <div class="someTypeofRow">
       <a href="/mainpage/choc.html">
        Chocolate flavor
       </a>
       <span class="yearText">
        (2009)
       </span>
       <br/>
       <a href="/mainpage/van.html">
        Vanilla flavor
       </a>
       <span class="yearText">
        (2004)
       </span>
       <br/>

我希望从中列出一个可以放入数据框的列表

list = [ ('/mainpage/choc.html', 'Chocolate flavor', '2009') ,
             ('/mainpage/van.html', 'Vanilla flavor', '2004' )]

到目前为止,我能够获得 href:

firstlist = []
jims = soup.find(class_='someOtherRow')
for jim in jims.find_all('a', href=True): 
    if jim.text: 
        firstlist.append(jim['href'])
print(firstlist)

我可以单独获取文本内容:

car_elems = soup.find(class_='someOtherRow')
d1 = car_elems.find_all_next(string=True)
for car_elem in car_elems:
    print (d1)

但我似乎无法将它们放在一起或正确迭代。感谢您的任何建议。

【问题讨论】:

    标签: python-3.x beautifulsoup


    【解决方案1】:

    您可以选择所有href="/mainpage" 开头的&lt;a&gt; 标签,然后为&lt;span class="yearText"&gt; 执行.find_next()

    例如:

    import pandas as pd
    from bs4 import BeautifulSoup
    
    
    txt = '''
           <div class="someTypeofRow">
           <a href="/mainpage/choc.html">
            Chocolate flavor
           </a>
           <span class="yearText">
            (2009)
           </span>
           <br/>
           <a href="/mainpage/van.html">
            Vanilla flavor
           </a>
           <span class="yearText">
            (2004)
           </span>
           <br/>
    '''
    
    soup = BeautifulSoup(txt, 'html.parser')
    
    all_data = []
    for a in soup.select('a[href^="/mainpage"]'):
        all_data.append((a['href'], a.get_text(strip=True), a.find_next('span', class_='yearText').get_text(strip=True) ))
    
    df = pd.DataFrame(all_data, columns=['URL', 'Flavour', 'Year'])
    print(df)
    

    打印:

                       URL           Flavour    Year
    0  /mainpage/choc.html  Chocolate flavor  (2009)
    1   /mainpage/van.html    Vanilla flavor  (2004)
    

    【讨论】:

    • 感谢 Andrej,这对我很有帮助,让我感动!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-15
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 2010-10-27
    相关资源
    最近更新 更多