質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Beautiful Soup

Beautiful Soupは、Pythonのライブラリの一つ。スクレイピングに特化しています。HTMLデータの構文の解析を行うために、HTMLタグ/CSSのセレクタで抽出する部分を指定することが可能です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Q&A

解決済

1回答

1049閲覧

python3でのエラーについて

mm--_--mm

総合スコア113

Beautiful Soup

Beautiful Soupは、Pythonのライブラリの一つ。スクレイピングに特化しています。HTMLデータの構文の解析を行うために、HTMLタグ/CSSのセレクタで抽出する部分を指定することが可能です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

0グッド

0クリップ

投稿2019/04/22 10:07

いつもお世話になっております。

表題の件ですが、参考書を使用してpythonのスクレイピングについて勉強をしております。参考書に載ってるコードをpython3でコンソール上で実行すると【AttributeError: 'NoneType' object has no attribute 'find'】というエラーが出てしまいます。自分でも調べたのですが原因がよくわかりません...。
原因がわかる方いらっしゃれば教えていただけると幸いです。よろしくお願いいたします。

python3,BeautifulSoup4を使用しております。

python

1 import requests 2 from bs4 import BeautifulSoup 3 4 game_ranking_html = requests.get('http://www.amazon.co.jp/gp/new-releases/videogames/637394') 5 soup = BeautifulSoup(game_ranking_html.text,"html.parser") 6soup.find(class_="zg_itemRow").find(class_="zg_title").find("a").string 7

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tiitoi

2019/04/22 10:41

そのサイトをブラウザで開いて、HTML を確認してください zg_itemRow というクラスはありましたが、zg_title というクラスは見当たらないです。 find() は見つからない場合は None を返すのでそれでエラーとなっているのだと思います。 書籍にそのとおりに書いてあるのだとしたら、Web サイトというのは日々更新されるものなので、当時はあって今はなくなってしまったのかもしれません。
mm--_--mm

2019/04/22 10:58

ご回答いただきありがとうございます!ソースコードを調べてみたところ、おっしゃる通りzg_titleというクラスはありませんでした...。商品名を表示するクラスが p13n-sc-truncate に変更されていたためこれを使用したら取得することができました!
iwamot

2019/04/22 11:51

解決されたようなら解決済にしていただけるとありがたいです。
mm--_--mm

2019/04/22 11:53

すみません...解決済みにするボタンが見つからなくて...ベストアンサーを選べば良いのでしたっけ?
mm--_--mm

2019/04/22 11:57

ありがとうございます!解決済みにしました!ご迷惑おかけしました...!
iwamot

2019/04/22 11:59

いえいえ、こちらこそありがとうございます。
guest

回答1

0

ベストアンサー

soupの中に何が入ってるのか、
soup.find(class_="zg_itemRow")が何を返しているのか、
んでもひとつ、soup.find(class_="zg_itemRow").find(class_="zg_title")が何なのかを調べてみよう

投稿2019/04/22 10:10

編集2019/04/22 10:11
y_waiwai

総合スコア87749

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mm--_--mm

2019/04/22 10:25

ご回答いただきありがとうございます!前者をprintで表示してみたところランキング4位のhtmlソースが表示されました。後者の方をprintで表示してみるとNoneと表示されました。前者のソース内にzg_titleというタグが見つからなかったのでfindを使用しても表示されなかったということでしょうか..?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問