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

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

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

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

Python 3.x

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

Q&A

1回答

787閲覧

beautifulsoupを用いてリストからURLを取得する方法

shota1192

総合スコア0

Beautiful Soup

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

Python 3.x

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

0グッド

0クリップ

投稿2021/08/14 13:39

引用テキスト### 前提・実現したいこと

ここに質問の内容を詳しく書いてください。

ヤフオクで指定したURLの商品情報一覧を取得するスクレイピングツールを制作しています
商品名とURLを取得してcsvで出力できるようなツールのイメージです

発生している問題・エラーメッセージ

タイトル一覧は取得できましたが、URL取得の段階で下記の通り、キーエラーが出てしまいます。


KeyError
Traceback (most recent call last)
<ipython-input-186-92cb4690ce95> in <module>
2 for i in titlelists:
3 title_list.append(i.string)
----> 4 url_list.append(i.attrs['href'])

KeyError: 'href

該当のソースコード

from bs4 import BeautifulSoup import urllib.request as req from urllib.parse import urlparse response = req.urlopen(url_seller) parse_html = BeautifulSoup(response,'html.parser') titlelists = parse_html.find_all('a') title_list = [] url_list = [] for i in titlelists: title_list.append(i.string) url_list.append(i.attrs['href'])

試したこと

for文のなかではなく、findallで取得したリストに直接番号を指示してやると↓
titlelists[10].attrs['href']
このコードなら問題なくURLが出力されます。なのでhrefがリストの中にないはずはないのですが、for文でリストから順番に取得しようとするとエラーが出てしまいます。

補足情報(FW/ツールのバージョンなど)

python3
beautifulsoup4

Jupiter labで作成しています。

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

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

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

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

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

guest

回答1

0

単純に9番目のaタグにはhrefの属性があっただけで、titlelistsに入っている他のaタグの中には属性が無いものも含まれているのではないでしょうか?

投稿2021/08/17 11:41

AbcdefgFirst

総合スコア33

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問