
※非エンジニア・Python初心者です。
質問の仕方が悪い場合、ご指摘いただけますと幸いです。
前提・実現したいこと
現在、htmlの中から特定の情報を取り出すプログラムを書こうと思っています。
取り出したい情報は、**htmlソース中、全ての<a>の中にある<img>**です。
例:(すごいざっくりですが)
html
1<table> 2 <body> 3 <tr> 4 <td> 5 <a href="#"><img src="A" alt=""></a> 6 <a href="#"><img src="B" alt=""></a> 7 <a href="#"><img src="C" alt=""></a> 8 </td> 9 </tr> 10 </body> 11</table>
というhtmlの場合において、取り出したいのは、
<img src="A" alt="">
<img src="B" alt="">
<img src="C" alt="">
ということになります。
入れ子のタグの中身を抽出する方法がわからなかったので、
こちらのサイトを参考にしつつ
BeautifulSoupを用いて下記のようなコードを書きました。(URLはサンプルです。)
該当のソースコード
Python
1import urllib.request 2from bs4 import BeautifulSoup 3 4html = urllib.request.urlopen("http://www.city.kashiwa.lg.jp/") 5soup = BeautifulSoup(html, "html.parser") 6 7urllist = soup.a.find_all("img") 8print(urllist)
出力結果。一番最初の<a>の中の情報しか取れなかった。
[<img alt="本文へ" src="/share/imgs/transparent.png/>"]
「aの中で入れ子になっている全てのimgを取得すること」は上記内容で解決でき、大変満足なのですが、
そもそも<a>自体がhtmlに複数ある場合はどう書いたら全部取り出せるのでしょう。
試しにsoup.find_all("a").find_all("img")
という無謀なことも書いてみましたが、当然エラーになりました。
が、思い描いているイメージとしてはそんな感じです。
この場合、どのようなコードを書いたらよいのでしょうか。どなたかご教示いただけませんか?

回答2件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。
退会済みユーザー
2018/02/22 12:51