@ArtKiss123

Как спарсить все данные таблицы сайта?

Есть сайт, с которого нужно спарсить информацию обо всех банках. Таблица показывает данные только по одному банку. Для показа других банков необходимо в селекторе выбрать другой банк, а так же квартал и год, за который нужна информация. После нужно все данные занести в CSV файл. Прикладываю свой код Python
import requests
from bs4 import BeautifulSoup
import csv

headers = {
    "Accept": "*/*",
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36"
}
with open("index.html", encoding='utf-8') as file:
    pars = file.read()
soup = BeautifulSoup(pars, 'lxml')

tablecaption = soup.find('div', class_='table-caption').find_all('div')
with open(f"table_results.csv", "w", encoding="utf-8") as file:
    writer = csv.writer(file, delimiter=',')
    for tc in tablecaption:
        writer.writerow(
            (
                tc
            )
        )

tablehead = soup.find("table", class_="first-col-fixed-table stat").find_all("th")
name = tablehead[0].text.strip()
startdate = tablehead[1].text.strip()
finishdate = tablehead[2].text.strip()
with open(f"table_results.csv", "a", encoding="utf-8") as file:
    writer = csv.writer(file, delimiter=',')
    writer.writerow(
        (
            name,
            startdate,
            finishdate
        )
    )

banks = soup.find('div', class_='select').find_all('option')

with open(f"table_results.csv", "a", encoding="utf-8") as file:
    writer = csv.writer(file, delimiter=',')
    for bank in banks:
        writer.writerow(
            bank
        )

# tablerow = soup.find('tbody').find_all('tr')
# tablerow.remove(tablerow[0])
# tablerow.remove(tablerow[14])
# tablerow.remove(tablerow[22])
# with open(f"table_results.csv", "a", encoding="utf-8") as file:
#     writer = csv.writer(file, delimiter=',')
#     for tr in tablerow:
#         td = tr.find_all("td")
#         article = td[0].text.replace(u'\xa0', ' ').lstrip("\n")
#         # data1 = td[1].text.replace(u'\xa0', ' ').lstrip("\n")
#         # data2 = td[2].text.replace(u'\xa0', ' ').lstrip("\n")
#         writer.writerow(
#             (
#                 article,
#                 # data1,
#                 # data2
#             )
#         )
и сайт, с которого нужно брать данные https://www.nbrb.by/system/banks/financialposition...

Буду благодарен, если поможете, ибо не могу решить эту проблему давно, а времени все меньше. Хотя бы какую документацию посмотреть или видеоуроки.
  • Вопрос задан
  • 103 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы