<table id="journal" class="marks">
<tbody>
<tr>'
<td class="s2">
<strong class="u">HTML</strong>
</td>
<td class="tac">
<span class="mark mY analytics-app-popup-mark" data-num="0">1</span>
<span class="mark mY analytics-app-popup-mark" data-num="0">2</span>
<span class="mark mG analytics-app-popup-mark" data-num="0">3</span>
</td>
from lxml import etree
html = """
<table id="journal" class="marks">
<tbody>
<tr>
<td class="s2">
<strong class="u">HTML</strong>
</td>
<td class="tac">
<span class="mark mY analytics-app-popup-mark" data-num="0">1</span>
<span class="mark mY analytics-app-popup-mark" data-num="0">2</span>
<span class="mark mG analytics-app-popup-mark" data-num="0">3</span>
</td>
</tr>
</tbody>
</table>"""
tree = etree.fromstring(html)
for block in tree.xpath("//table[@id='journal']/descendant::span[starts-with(@class, 'mark')]"):
print(block.xpath("text()"))