🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Beautiful Soup

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

Python 3.x

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

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

Q&A

1回答

701閲覧

スクレイピング: コードが分からない

monmon2

総合スコア17

スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Beautiful Soup

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

Python 3.x

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

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

0グッド

0クリップ

投稿2021/03/30 08:08

編集2021/03/30 08:13

出力されたエラーに対して、コードをどう変更すればいいのかわかりません。
取得したい情報に対してどのようにコードを入力すればいいのか教えてください。

情報を取得したいwebサイト
https://www.technique.co.jp/items.html?target=label&range=all&q=Pinkman

取得したい情報
アーティストの名前
解説(ソースコードclass=item_navi_shouhin_kaisetsu_txt03)の部分

python

1from time import sleep 2from bs4 import BeautifulSoup 3import requests 4import pandas as pd 5 6url = "https://www.technique.co.jp/items.html?target=label&range=all&q=Pinkman?page={}" 7d_list = [] 8 9for i in range(1, 21): 10 target_url = url.format(i) 11 print(target_url) 12 13 r = requests.get(target_url) 14 sleep(1) 15 16 soup = BeautifulSoup(r.text) 17 18 contents = soup.find_all('table', class_='item-list-table') 19 for content in contents: 20 detail = content.find('div', class_='clearfix') 21 name = detail.find('a', class_='mnex_float_btn_parent') 22 describe = detail.find('p', class_='item_navi_shouhin_kaisetsu_txt03') 23 d = { 24 'name': name.text, 25 'describe': describe.text, 26 } 27 28 d_list.append(d) 29 30 df = pd.DataFrame(d_list)

出力されたエラー

Traceback

1 File "/Users/user/スクレイピング/pinkman.py", line 21, in <module> 2 name = detail.find('a', class_='mnex_float_btn_parent') 3AttributeError: 'NoneType' object has no attribute 'find' 4 5 df.to_csv('pinkman.csv', index=None, encoding='utf-8-sig')

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

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

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

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

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

K_3578

2021/03/30 08:09

ソースコードはMarkDownの<code>ブロック内に貼り付けてください。 質問は編集できますので。
guest

回答1

0

提示ソース

python

1 detail = content.find('div', class_='clearfix')

のところで、detailがNone(findの結果がNone。すなわちfindできなかった)なので、質問のようなエラーがでます。
(1) detailがNoneならば、処理対象としない。
(2) findの条件を見直す。
を試したらいかがでしょう。

投稿2021/03/30 08:38

編集2021/03/30 08:45
ikapy

総合スコア1167

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

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

monmon2

2021/03/30 08:45

ありがとうございます。 とりあえず、findの条件を見直して、試してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問