Pythonで以下のプログラムを書いたのですが、
from bs4 import BeautifulSoup
import requests
game_ranking_html = requests.get('http://www.amazon.co.jp/gp/new-releases/videogam …
soup = BeautifulSoup(game_ranking_html.text,"html.parser")
print(soup.find(class_='zg_itemRow').find(class_='zg_title').find('a').string)
print('')
for game in soup.findAll(class_='zg_itemRow'):
print(game.find(class_='zg_rankNumber').string + game.find(class_='zg_title').find('a').string)
を実行すると、
Traceback (most recent call last):
File "C:\Users\Hiroaki Sakakida\Desktop\Practice\Practice\chap6-4.py", line 26, in <module>
soup.find(class_='zg_itemRow').find(class_='zg_title').find('a').string
AttributeError: 'NoneType' object has no attribute 'find'
と出力され、どうすればよいか分かりません。ネットで調べても分かりませんでした。
このエラーが起きないよう、解決策を教えてください。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
何を目的にどうやろうとしたのか、私にはわかりません。
プログラムを眺める限り、アマゾンのなんかのページから情報を取り出して表示させようとしているのがわかるくらいです。
そのページのHTMLをBeautifulSoupで解析して、取り出したい情報を取り出しているのでしょう。
ただ、この手のサイトはちょくちょくHTMLの構造が変更されます。
そのプログラムが、どこかからコピーしたものだったりしたら、class名等は過去のもので、現在は使えない、あるいは構造が変化している、ということが考えられます。
ですから、現状に合うように、ご自身でHTMLを解析したり検索方法を変えたりしてください、としか言いようがありません。
No.1
- 回答日時:
メッセージの内容を理解しましょう。
Noneオブジェクトに対して find メソッドを使おうとしているのが、このエラーの理由です。
https://www.crummy.com/software/BeautifulSoup/bs …
によると、findは見付からない場合に Noneを返す、とあります。
例えば
zg_itemRow が見つからなくて soup.find(class_='zg_itemRow') が Noneを返す
→ soup.find(class_='zg_itemRow') ,findfind(class_='zg_title') が None.find(class_='zg_title') の意味になる
→ Noneには findメソッドが無い
といったことが起ります。
一つずつfindがNoneを返していないか確認する必要はあるかと思います。
ですが、それ以上の具体的な修正方法はわかりません。
プログラムに間違いがあって見つからないのか
そもそも無いものを探そうとしているのか
といった判断ができません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) pythonのWebスクレイピングでfind_allだとurlがNoneに 4 2022/04/17 18:21
- その他(プログラミング・Web制作) ColabでのPytorchのエラー 1 2022/11/19 20:51
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/30 09:10
- Ruby pythonエラー 4 2022/11/11 19:12
- その他(プログラミング・Web制作) ラズパイ上の、pythonのエラーについて 1 2023/04/12 23:27
- その他(プログラミング・Web制作) python 気象データの取得 2 2023/06/20 23:54
- その他(プログラミング・Web制作) pythonをjupiter notebookからmecabで頻出の高い単語の抽出について(Runt 1 2022/12/17 18:08
- Visual Basic(VBA) オブジェクトが見つかりません 1 2023/06/24 19:43
- PHP PHPの構文で間違えが分からない 5 2022/07/11 16:38
- Ruby パイソンエラーについて 1 2022/12/24 14:07
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA 電話番号の正規表現について
-
プログラマーと学歴の関係性に...
-
vba クリップボードクリアにつ...
-
MacのPythonでの開発について
-
ImageMagickでgif画像の一部が...
-
Pythonでgif画像が上手く作れない
-
プログラミングのPythonのnoteb...
-
初心者powershellのPS1ファイル...
-
GoogleAppsScript文字列置換の...
-
pythonにてseleniumを使うも、...
-
ホワイトハッカー
-
大学のゼミのレポートがムカつ...
-
楽しくて最高のプログラミング...
-
昔のパソコン少年の武勇伝「店...
-
ものづくりに向いているプログ...
-
このURLで広告を出しているのは...
-
Latexに関する質問です。
-
プログラミングを教えたいです...
-
小学1年生の子です。塾に行かせ...
-
pythonで複数画像からgifを作る...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
pythonのerrorコード
-
What class are you in? には何...
-
パイソンのクラス
-
No route matches [GET] "/post...
-
クラス名やモジュール名の競合...
-
Rubyについて質問です
-
変数の隠蔽とは?
-
HSTLやSSTL等のI/Oピン
-
クラスの再定義について(C++)
-
redirect先でredirect元の変数...
-
Ruby ハッシュ継承クラス、作成...
-
classのdelete
-
Rubyの質問です
-
PostScript言語で定積分の計算
-
class roomとclassroom どちら...
-
テンプレートの特殊化でコンパ...
-
get() と find() の違いについて
-
「arg」は何の略?
-
エラー「メソッドまたはデータ...
-
教えてください。vb5.0
おすすめ情報
ご指摘の通り、一つずつfindを実行(.string付き)した結果、find(class_='zg_itemRow')とfind('a')はNoneを返してきましたが、find(class_='zg_title')は
Traceback (most recent call last):
File "C:\Users\Hiroaki Sakakida\Desktop\Practice\Practice\chap6-4.py", line 26, in <module>
print(soup.find(class_='zg_title').string)
AttributeError: 'NoneType' object has no attribute 'string'
となったので、stringを外すと、Noneが返ってきました。どうすればいいでしょうか?
SBクリエイティブ株式会社発行、鎌田正浩著の「確かな力が身につくPython「超」入門」という本の240ページのPythonで外部ライブラリを使ってプログラミングする練習するための実行コードを実行した結果、エラーが出たというわけです。2016年8月27日発行のものなので、ご指摘の通り、HTMLの構造が現在と異なっている可能性が考えられます。そこで、HTMLの解析法などを追記していただけると助かります。