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

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

詳細はこちら
Python

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

Q&A

解決済

1回答

965閲覧

親要素クラスの中の指定クラスのリンクの取得。

shshshsh

総合スコア1

Python

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

0グッド

0クリップ

投稿2021/01/22 00:12

前提・実現したいこと

親要素クラスの中の指定クラスのリンクの取得。
python、beautifulsoupnによるWEBスクレイピング機能を開発中です。

div class = "hoge"
| ul class = "全てのアイテム"
| | li class = "アイテム"
| | | div class = "コンテンツ"
| | | | div class = "画像"
| | | | | a href="hogehoge.html"
| | | div class = "コンテンツ"
| | | | div class = "名前"
| | | | | a href="hogehogehoge.html"
| | li class = "アイテム"
| | | div class = "コンテンツ"
| | | | div class = "画像"
| | | | | a href="hogehoge123.html"
| | | div class = "コンテンツ"
| | | | div class = "名前"
| | | | | a href="hogehogehoge123.html"

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

class "hoge"内のclass"画像"のa ref リンクを全て取得したいのですが
上手く動きません。

色々試したのですが"hoge"内全てのリンクや"アイテム"内のみのリンクしか取得できない状況です。

初めての質問で稚拙で分かりにくいかもしれませんが、どうかご享受お願い致します。

該当のソースコード

res1 = soup.find('div', class_='hoge') tag_list = [elem['href'] for elem in res1.find_all('a')] print(tag_list)

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

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

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

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

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

quickquip

2021/01/22 00:29

動かして再現可能ソースと、望む結果があった方がよいです。 html = """<div> <ul> <li> (略) </div>""" soup = BeautifulSoup(html, "lxml") みたいな感じです。
meg_

2021/01/22 00:37 編集

res1 = soup.find('div', class_='hoge') tag_list = [elem['href'] for elem in res1.find_all('a')] print(tag_list) 上記コードの実行結果は何ですか?質問に追記しましょう。
guest

回答1

0

ベストアンサー

python

1import bs4 2html="" 3with open("test.html",encoding="utf-8",mode="r") as f: 4 html = f.read() 5 # print(html) 6soup = bs4.BeautifulSoup(html,"lxml") 7 8res1 = soup.find('div', class_='hoge') 9tag_list = [elem['href'] for elem in res1.find_all('a') if elem.parent.attrs["class"] == ['画像']] 10print(tag_list)

 
test.html

HTML

1<div class="hoge"> 2 <ul class="全てのアイテム"></ul> 3 <li class="アイテム"> 4 <div class="コンテンツ"> 5 <div class="画像"> 6 <a href="hogehoge1.html">hogehoge_img</a> 7 </div> 8 </div> 9 <div class="コンテンツ"> 10 <div class="名前"> 11 <a href="hogehoge2.html">hogehoge_name</a> 12 </div> 13 </div> 14 </li> 15 <li class="アイテム"> 16 <div class="コンテンツ"> 17 <div class="画像"> 18 <a href="hogehoge123a.html">hogehoge123_img</a> 19 </div> 20 </div> 21 <div class="コンテンツ"> 22 <div class="名前"> 23 <a href="hogehoge123b.html">hogehoge123_name</a> 24 </div> 25 </div> 26 </li> 27 </ul> 28</div>

投稿2021/01/22 01:57

編集2021/01/22 01:58
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

shshshsh

2021/01/22 07:14

ありがとうございます。 解決しました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問