

<https://ntp.msn.com/edge/ntp?locale=ja>

マイクロソフトエッジ↑ こちらのURLからニュースを取り出して表示させようとしたのですがBeautifulSoupがうまく動いていないのかエラーが発生します

[code]

    import requests
    from bs4 import BeautifulSoup
    
    load_url="https://ntp.msn.com/edge/ntp?locale=ja"
    html=requests.get(load_url)
    soup=BeautifulSoup(html.content,"html.parser")
    print(soup)
    
    topic=soup.find(class_="news-list")
    for element in topic.find_all("a"):
        print(element.text)
    
[/code]

こちらのコードの

[code]

    topic=soup.find(class_="news-list")
    
[/code]

の一行で

[code]

    例外が発生しました: AttributeError
    'NoneType' object has no attribute 'find_all'
      File "パスを隠させていただきました", line 10, in <module>
        for element in topic.find_all("a"):
    
[/code]

というエラーが発生します  
どなたか解決方法をお知りの方がいましたら回答をお願いいたします


CC BY-SA 4.0
2022-09-05T22:14:29.400
90949
2022-09-06T13:00:30.420
53981
question
python beautifulsoup python-requests
pythonのスクレイピングがうまくいきません


何処でエラーが発生したかの認識が合っていないでしょう。

質問では以下の行でエラーが発生したと提示されていますが：

[code]

    topic=soup.find(class_="news-list")
    
[/code]

エラーメッセージは以下の行でエラーが発生したことを示しています。

[code]

    for element in topic.find_all("a"):
    
[/code]

実際には`'NoneType' object has no attribute
'find_all'`であり、`topic`というオブジェクトが`NoneType`(=None)であるため、`find_all`という属性(この場合はメソッド)を持っていないために発生しているので、最初の問題自身は提示された`topic=soup.find(class_="news-
list")`の処理結果(`"news-
list"`のクラス名を持つ要素が存在しない)にありますが、エラーメッセージとの整合性は別であり、エラーは提示された行の次の行で発生しています。

この辺の認識にズレがあるままでは、調べたり対処したりすべき対象や内容を間違えて何時までも調査が進展せず解決しない可能性が高くなります。

* * *

Pythonプログラムでは無く、手作業でMS-Edgeブラウザを操作して取得出来るWebページ内容に、`"news-
list"`のクラス名を持つ要素が存在することは確認されているのでしょうか？

そうした前提となる条件から徐々にプログラムへ移行出来るように段階的な作業をしていくのが良いと思われます。


CC BY-SA 4.0
2022-09-06T13:00:30.420
90962
2022-09-06T13:00:30.420
26370
90949
answer