@wifmoney

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

Хотел распарсить сайт биржи binance.com/ru/markets/spot-USDT
и получить все названия валют. У меня получилось распарсить первую страницу и получить все нужные данные.
Но там на сайте в общем 7 страниц и не получается распарсить остальные страницы и ссылку на следующию страницу он не введет.
Для парсинга использовал библиотеку bs4, request

Помогите распарсить остальные страницы. Как это сделать?
вот мой код парсера:

from bs4 import BeautifulSoup
import requests


HOST = "https://www.binance.com"
URL = "https://www.binance.com/ru/markets/spot-USDT"

HEADERS = {
    'User-Agent':'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:100.0) Gecko/20100101 Firefox/100.0',
    "accept": "text/html, application/xhtml+xml, application/xml;q=0.9, */*;q=0.8" 
}



def get_html(url: str, params=' '):
    # это функция получает данные из сайта #
    return requests.get(url, headers=HEADERS, params=params)

html = get_html(URL)

def get_content(html) -> list:
    soup = BeautifulSoup(html.text, 'html.parser')
    items = soup.find_all('div', class_='css-72ldqd')
    new_list = []

    for item in items:
        title = item.find_all('div', class_='css-17wnpgm')
        for i in title:
            new_list.append({
            'title': i.get_text()
            })
        return new_list


def save(items: list, path: str):
    with open(path, 'w') as file:
        for num, item in enumerate(items, 1):
            file.write(f"№ N{num} - Crypto: {item['title']}\n")
            

def parse(page):
    html = get_html(URL)
    if html.status_code == 200:
        new_list = []
        for pg in range(1, page+1):
            html = get_html(URL, params={'page':pg})
            new_list.extend(get_content(html))
            print(f'Страница {pg} готово!')

        save(new_list, 'binance_parsing/all_cripto_name.txt')
        print('Парсинг прошел успешно')
    else:
        print('Не удалось подключиться к сайту')
parse(7)
  • Вопрос задан
  • 171 просмотр
Пригласить эксперта
Ответы на вопрос 2
@Story-teller
Пагинатор находится по адресу: https://www.binance.com/bapi/composite/v3/public/m...
меняете параметры page=.. и получаете нужные страницы. Проще всего воспользоваться json.load(resp.text)
Ответ написан
Комментировать
Ichi
@Ichi
Увлекаюсь программированием
Довольно простой и глупый вопрос: а зачем заниматься парсингом, если есть оффициальный апи? Он бесплатный, токен получается в кабинете. Ссылка на документацию

Вот ссылка на биржу ссылка, у меня даже без токена открывается
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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