<p>具有特定<em>Xpath</em>表达式的复杂解决方案:</p>
<pre><code>from lxml import html
import requests
url = 'https://bankchart.kz/spravochniki/reytingi_cbr/2/2019/7'
doc = html.document_fromstring(requests.get(url).content)
for row in doc.xpath('//div[@class="table-currency"]/div[@class="row"]'):
bank_name = row.xpath('descendant::a/text()')[0].strip()
print(bank_name)
for cur_rate in row.xpath('div[contains(@class, "col-currency-rate")][position() > last() - 3]'):
print('-', cur_rate.text_content())
print()
</code></pre>
<p>详情:</p>
<ul>
<li><code>descendant::a/text()</code>-xpath提取<code>a</code>元素的文本节点,该元素是下划线行的子节点/子节点</li>
<li><code>div[contains(@class, "col-currency-rate")][position() > last() - 3]</code>-xpath选择<code>div</code>元素,该元素具有特定的<code>class</code>属性部分值,位置从第三个最后位置开始到最后一个位置(<code>last()</code>-最后一个元素的位置,<code>last() - 3</code>指向最后第三个位置)</li>
</ul>
<p>输出:</p>
<pre><code>Народный банк Казахстана
- 8 729 518 087
- +101 401 107
- -190 957 466
ForteBank
- 1 985 956 865
- +89 298 547
- +390 999 868
Сбербанк России
- 1 983 840 092
- +88 853 745
- +119 145 827
Kaspi Bank
- 1 907 391 103
- +12 378 770
- +233 318 909
Банк ЦентрКредит
- 1 495 599 542
- +34 795 443
- -14 202 851
АТФБанк
- 1 314 405 536
- +1 661 967
- -19 558 254
First Heartland Jýsan Bank
- 1 217 617 065
- +52 641 777
- -553 564 176
Жилстройсбербанк Казахстана
- 1 148 974 349
- +7 721 823
- +261 041 394
Евразийский банк
- 1 040 820 999
- -25 910 447
- -25 911 373
Ситибанк Казахстан
- 758 117 020
- +48 724 924
- +82 877 576
Банк "Bank RBK"
- 618 310 738
- +21 856 874
- +62 626 834
Альфа-Банк
- 504 777 556
- +17 401 839
- +51 157 130
Altyn Bank («Народный банк Казахстана»)
- 421 018 633
- -20 058 555
- +33 720 048
Нурбанк
- 408 442 557
- +7 065 511
- -18 282 545
Хоум Кредит энд Финанс Банк
- 372 901 871
- -2 127 105
- +33 983 288
Банк Китая в Казахстане
- 324 386 349
- +11 609 880
- +4 997 316
Банк ВТБ
- 184 247 490
- +5 800 194
- +40 725 927
First Heartland Bank (Банк ЭкспоКреди)
- 173 058 018
- -17 261 535
- +16 047 168
Торгово-промышленный Банк Китая в Алматы
- 140 792 847
- +6 365 348
- -26 137 736
Банк Kassa Nova
- 133 910 512
- +954 985
- +4 039 523
Tengri Bank (Punjab National Bank)
- 133 721 602
- +1 136 896
- -485 570
Азия Кредит Банк
- 99 659 306
- -3 790 116
- -21 420 844
Capital Bank Kazakhstan
- 85 702 895
- -3 165 322
- +4 469 187
KZI Bank (Казахстан Зират Интернешнл)
- 65 240 704
- -3 412 060
- -126 750
Шинхан Банк Казахстан
- 43 323 406
- -7 588 366
- +722 399
Исламский Банк "Al-Hilal"
- 30 562 279
- +2 411 098
- -1 430 198
Заман-Банк
- 22 969 984
- -168 105
- +5 544 675
Национальный Банк Пакистана
- 4 705 084
- -20 113
- -131 233
</code></pre>