from bs4 import BeautifulSoup html = """ <html><body> <h1>決算速報 【リアルタイム配信中】</h1> <p>07/27 17:30 菱友システム、4-6月期(1Q)経常は7.8倍増益で着</p> <p>07/27 16:45 D・アクシス、上期経常を一転8%減益に下方修正</p> </body></html> """ soup = BeautifulSoup(html, 'html.parser') h1 = soup.html.body.h1 p1 = soup.html.body.p p2 = p1.next_sibling.next_sibling print("h1 = " + h1.string) print("p = " + p1.string) print("p = " + p2.string)
ここは普通ですね。
[vagrant@localhost python]$ python3 app.py
h1 = 決算速報 【リアルタイム配信中】
p = 07/27 17:30 菱友システム、4-6月期(1Q)経常は7.8倍増益で着
p = 07/27 16:45 D・アクシス、上期経常を一転8%減益に下方修正
h1が1つ、pタグが2つなんてサイトはありませんから、ここからが本番です。
html = """ <html><body> <h1 id="news">決算速報 【リアルタイム配信中】</h1> <p id="d1">07/27 17:30 菱友システム、4-6月期(1Q)経常は7.8倍増益で着</p> <p id="d2">07/27 16:45 D・アクシス、上期経常を一転8%減益に下方修正</p> </body></html> """ soup = BeautifulSoup(html, 'html.parser') h1 = soup.find(id="news") p1 = soup.find(id="d1") p2 = soup.find(id="d2") print("h1 = " + h1.string) print("p = " + p1.string) print("p = " + p2.string)
[vagrant@localhost python]$ python3 app.py
h1 = 決算速報 【リアルタイム配信中】
p = 07/27 17:30 菱友システム、4-6月期(1Q)経常は7.8倍増益で着
p = 07/27 16:45 D・アクシス、上期経常を一転8%減益に下方修正
h1 = soup.find(class="new") p1 = soup.find(class="d3") p2 = soup.find(class="d4")
classにすると、invalid errorになる。何故だ?
[vagrant@localhost python]$ python3 app.py
File “app.py”, line 13
h1 = soup.find(class=”new”)
^
SyntaxError: invalid syntax