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

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

新規登録して質問してみよう
ただいま回答率
85.48%
スクレイピング

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

Python 3.x

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

Q&A

解決済

2回答

4202閲覧

aタグのhref属性を取得する方法

hiroikawa55

総合スコア26

スクレイピング

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

Python 3.x

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

0グッド

1クリップ

投稿2018/09/08 08:14

Python3で、URLを検索して、本のタイトルとURLを取得するプログラムをつくっています。
しかし、aタグのhref属性を取得しようとすると以下のエラーメッセージが発生しました。

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

KeyError Traceback (most recent call last)
<ipython-input-128-e3b594fa8210> in <module>()
10 a_list = bs.select("h3")
11 for a in a_list:
---> 12 href= a.attrs['href']
13 text = a.string
14 # aタグのhref属性を取得

KeyError: 'href'

### 該当のソースコード python3.x import requests from bs4 import BeautifulSoup URLからHTMLを取得 url = input("Urlを入力してください: ") response = requests.get(url) response.encoding = response.apparent_encoding bs = BeautifulSoup(response.text, 'html.parser') a_list = bs.select("h3") for a in a_list: href= a.attrs['href'] text = a.string print(text,href) ### 試したこと 本やWebを検索し、aタグに含まれるhref情報を得るためのコードを試してみたのですが、エラーとなり前に進めなくなってしまいました。お手数をお掛けしますが、お教えいただけないでしょうか。 ### 補足情報(取得しようとするWebページのCSSセレクタ) (#main > div > div > section:nth-child(3) > div.row > div.col-sm-9.col-right > div > div.table-responsive > table > tbody > tr:nth-child(1) > td:nth-child(2) > h3 > a)

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

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

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

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

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

guest

回答2

0

ベストアンサー

とりあえず、h3もaも一つではないという前提ですが以下のようになるのではないでしょうか。

python

1h3_list = bs.select("h3") 2for h3 in h3_list: 3 for a in h3.select("a"): 4 href= a.attrs['href'] 5 text = a.string 6 print(text,href)

投稿2018/09/08 15:26

denzow

総合スコア640

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

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

hiroikawa55

2018/09/09 06:20

たいへん、ありがとうございました。 いただいたコードに書き換えたところ、無事動きました。すごくうれしいです。最初の方に指摘いただいたように、h3の位置を示してあげればよかったのですね。 どうもありがとうございました。
guest

0

h3要素のhref属性を取り出そうとしていますね。

投稿2018/09/08 11:31

quickquip

総合スコア11038

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

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

hiroikawa55

2018/09/09 06:21

ヒントをいただきました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問