40678


次のようなタグの情報を取得したいと考えています。

[code]

    <ul class="dtlTbl">
            <li data-locate="address"><dl>
                    <dt>住所</dt> 
                    </dl>
            </li>
            <li data-locate="tel"><dl>
                    <dt>TEL</dt>
                    </dl>
            </li>
    </ul>
    
[/code]

このタグから、次のようにli の内容をひとつづつ保存したいと考えています。  
address = ["住所"]  
tel = ["tel"]  
このために、次のようなコードを書いています。

[code]

    import requests
    import bs4 
    import pandas as pd 
    
    resp = requests.get(url)
    html = resp.content
    soup = bs4.BeautifulSoup(html, "lxml")
    
    li_part = soup.find_all("ul", class_="dtlTbl")
    address = li_part.find_all("li", data-locate="address")
    
[/code]

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

[code]

     address = detail_part.find_all("li", data-locate="address")
                                             ^
    SyntaxError: keyword can't be an expression
    
[/code]

この問題について、解決方法を示唆して頂けますと、大変ありがたいです。


CC BY-SA 3.0
2018-01-02T22:20:38.040
40676
2018-07-20T07:49:47.903
2018-07-20T07:49:47.903
19110
20148
question
python beautifulsoup
BeautifulSoup を用いた、特定のli の内容の取得


引用： [kondou.com - Beautiful Soup 4.2.0 Doc. 日本語訳
(2013-11-19最終更新)](http://kondou.com/BS4/)

[code]

    HTML5の ‘data-*’ 属性など、いくつかの属性についてはキーワード引数として用いることができません。:
    
    data_soup = BeautifulSoup('<div data-foo="value">foo!</div>')
    data_soup.find_all(data-foo="value")
    # SyntaxError: keyword can't be an expression
    しかし、これらの属性を辞書にして、キーワード引数 attrs として値を渡せばフィルタリングすることができます。:
    
    data_soup.find_all(attrs={"data-foo": "value"})
    # [<div data-foo="value">foo!</div>]
    
[/code]

  
  
なので、やりたいことは下記になると思います。  
`li_part.find_all("li", attrs={"data-locate": "address"})`


CC BY-SA 3.0
2018-01-03T00:10:49.643
40678
2018-01-03T00:10:49.643
9008
40676
answer