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

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

詳細はこちら
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

955閲覧

hrefタグ内のURLが取り出せない

hiro_python

総合スコア4

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/02/26 03:19

スクレイピングで取得したhrefタグ要素から、URLのみを取得したいのですが
取得したデータから、URLが抽出できず、エラーが出てしまいます。

t_linkまでの過程で、データを取得できていることを確認したのですが
その後の抽出過程を追加したところ、エラーが出てしまいます。

シンプルなコードに縮小しましたが、調べてもどこが悪いのかがわかりません。
アドバイスをお願い致します。

import requests import bs4 url = 'https://finance.yahoo.co.jp/cm/message/1009984/a5bda5ua5ha5pa5sa5af/818' res = requests.get(url) soup = bs4.BeautifulSoup(res.text,'html.parser') t_link_class_name = '#cat-pass > ul > li:nth-child(2) > a' t_link = soup.select(t_link_class_name) t_url = t_link.get('href') print (t_url)

理想のデータ取得結果:

https://finance.yahoo.co.jp/cm/thread/1835700

エラー内容:

--------------------------------------------------------------------------- AttributeError Traceback (most recent call last) <ipython-input-23-7b2ceca55c57> in <module> 9 t_link_class_name = '#cat-pass > ul > li:nth-child(2) > a' 10 t_link = soup.select(t_link_class_name) ---> 11 t_url = t_link.get('href') 12 13 print (t_url) AttributeError: 'list' object has no attribute 'get'

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

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

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

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

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

guest

回答1

0

ベストアンサー

t_linkはリストなのでt_url = t_link[0].get('href')などのように要素を取り出さないとgetできません。

というのとは別に、下記のようにそもそもスクレイピングが禁止されていることは確認されましたか?

Yahoo!ファイナンスでは、Yahoo!ファイナンスに掲載している株価やその他のデータを、プログラム等を用いて機械的に取得する行為(スクレイピング等)について、システムに過度の負荷がかかり、安定したサービス提供に支障をきたす恐れがあることから禁止しています。

Yahoo!ファイナンス掲載情報の自動取得(スクレイピング)は禁止しています

投稿2021/02/26 03:55

jeanbiego

総合スコア3966

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

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

hiro_python

2021/02/26 04:11

なるほど、文字列ではなくリストとして取出していたのですね。 頂いたアドバイス通りにしましたら、無事取得できました。 尚、スクレイピング禁止されていることは知りませんでした。 教えて頂きありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問