40659


次のようなtagの、liの内容の一つづつを、listとして保存したいと考えています。

[code]

    <ul id="front">
    <li class="icon-01">乗用車</li>
    <li class="icon-02">トラック</li>
    <li class="icon-11">軽自動車</li>
    </ul>
    
[/code]

現在、次のようなコードを書いています。

[code]

    import requests
    import bs4
    import pandas as pd # pandas
    
    resp = requests.get(url)
    html = resp.content
    soup = bs4.BeautifulSoup(html, "lxml")
    
    icon_part = soup.find_all("ul", id = "front")
    
[/code]

これにより、ulの部分を取ることが出来るが、要素一つのlistとなります。

[code]

    [<ul id="front">
    <li class="icon-01">乗用車</li>
    <li class="icon-02">トラック</li>
    <li class="icon-11">軽自動車</li>
    </ul>]
    
[/code]

liの内容が、次のようにlistの要素となるようにしたいのですが、  
どうすれば良いのでしょうか？  
['乗用車', 'トラック', '軽自動車']

listの中身をsplitとしようとして 次のようにも書いてみました。

[code]

    icon_part[0].str.split('</li>', expand=True)
    
[/code]

しかし、次のようなエラーが出てきます。

[code]

    AttributeError: 'NoneType' object has no attribute 'split'
    
[/code]


CC BY-SA 3.0
2017-12-31T21:18:48.463
40646
2018-07-20T07:50:34.253
2018-07-20T07:50:34.253
19110
20148
question
python beautifulsoup
BeautifulSoupを使って<li>の内容をリストとして保存する方法？

[code]

    # -*- coding: utf-8 -*-
    import requests
    import bs4
    import pandas as pd # pandas
    
    
    def main():
        html ="""
        <ul id="front">
            <li class="icon-01">乗用車</li>
            <li class="icon-02">トラック</li>
            <li class="icon-11">軽自動車</li>
            </ul>
        """
        soup = bs4.BeautifulSoup(html, "lxml")
        icon_part = soup.find_all("ul", id="front")
        car_model = []
        for ul_tag in icon_part:
            for li in ul_tag.find_all('li'):
                car_model.append(li.text)
        print(car_model)
    
    
    if __name__ == '__main__':
        main()
    
[/code]


CC BY-SA 3.0
2018-01-01T21:42:57.453
40659
2018-01-01T21:42:57.453
21356
40646
answer