

pythonでapp_storeのランキングデータを取得するスクリプトを書いております。

↓のXMLファイルから取得予定  
<https://itunes.apple.com/jp/rss/topfreeapplications/limit=100/xml>

ライブラリはfeedparserを使う予定です。

feedparserで取得しようと

feedparser.parse(RSS_URL)  
をして、中身をみていたのですが、  
どうも以下のようなim:idのattributeが取得できませんでした。

`<id im:id='443904275' im:bundleId='jp.naver.line'> ... </>`

↑でいうところの`443904275`だけを取得したいです。

いろいろと調べていると、こちらが近しいことをしているのかなとおもったのですが、結果的に上手く実装できなかったため質問させて頂きました。  
<https://www.ianlewis.org/jp/feedparser_and_media>

feedparserでできない場合は他のライブラリを使おうと思います。

宜しくお願いします。


CC BY-SA 3.0
2016-07-17T13:13:17.687
27686
2020-03-30T02:02:00.350
13175
question
python
feedparserでim:idのattributeを取得したいです。(アップルのiOSのランキングデータのXMLを解析しています。)


<http://pythonhosted.org/feedparser/>

上記 feedparser のドキュメントをざっとみましたが、そもそも属性の「im:id='443904275'」を feedparser
は取り扱ってくれてないようです。

ご自身が参考にされたという記事に関しても、モンキーパッチを当てて強引に feedparser の挙動を変えてるのであまりお勧めはしません。

そこで別のライブラリを使った簡単な例を示します。

  * <https://pypi.python.org/pypi/requests>
  * <https://pypi.python.org/pypi/beautifulsoup4/>

上記二つのライブラリをインストールすれば下記のようなコードで"im:id"が抽出可能です。

[code]

    import requests
    from bs4 import BeautifulSoup
    
    URL = "https://itunes.apple.com/jp/rss/topfreeapplications/limit=100/xml"
    soup = BeautifulSoup(requests.get(URL).content, 'html.parser')
    for tag_id in soup.find_all('id'):
        im_id = tag_id.get('im:id')
        if im_id:
            print(im_id)
    
[/code]


CC BY-SA 3.0
2017-03-17T13:18:29.127
33394
2017-03-18T20:27:07.393
2017-03-18T20:27:07.393
2168
2168
27686
answer