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