Есть сайт, с которого нужно спарсить информацию обо всех банках. Таблица показывает данные только по одному банку. Для показа других банков необходимо в селекторе выбрать другой банк, а так же квартал и год, за который нужна информация. После нужно все данные занести в 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...
Буду благодарен, если поможете, ибо не могу решить эту проблему давно, а времени все меньше. Хотя бы какую документацию посмотреть или видеоуроки.