aタグを全て取得したいとする。
from bs4 import BeautifulSoup html = """ <html><body> <table id="tp_market_sub" style="margin:4px 0 0 20px; font-size:13px;"> <tr> <td><a href="/news/marketnews/?b=n201807300012">シカゴ日経・ADR</a> <img src="/images/cmn/new.gif" title="new"/></td> <td><a href="/news/marketnews/?b=n201807300013">米国株式概況</a> <img src="/images/cmn/new.gif" title="new"/></td> <td><a href="/news/marketnews/?b=n201807300014">今日の注目スケジュール</a> <img src="/images/cmn/new.gif" title="new"/></td> </tr> </table> </body></html> """ soup = BeautifulSoup(html, 'html.parser') links = soup.find_all("a") for a in links: href = a.attrs["href"] text = a.string print(text + " > " + href)
[vagrant@localhost python]$ python3 app.py
シカゴ日経・ADR > /news/marketnews/?b=n201807300012
米国株式概況 > /news/marketnews/?b=n201807300013
今日の注目スケジュール > /news/marketnews/?b=n201807300014
find_allで複数条件を指定したいよね。
html = """ <html><body> <table id="tp_market_sub" style="margin:4px 0 0 20px; font-size:13px;"> <tr> <td id="tp_market_1"><a href="/news/marketnews/?b=n201807300012">シカゴ日経・ADR</a> <img src="/images/cmn/new.gif" title="new"/></td> <td id="tp_market_1"><a href="/news/marketnews/?b=n201807300013">米国株式概況</a> <img src="/images/cmn/new.gif" title="new"/></td> <td id="tp_market_2"><a href="/news/marketnews/?b=n201807300014">今日の注目スケジュール</a> <img src="/images/cmn/new.gif" title="new"/></td> </tr> </table> </body></html> """ links = soup.find_all(id="tp_market_1", "a")
これだと上手くいかない。なんでだろう。。
soup.find_all(‘タグ名’, ‘属性’) だからか。。