Не получается спарсить ссылку с Binance
Не получается вытащить ссылку из href с Binance, пробовал после art выводить то, что спарсил, но в итоге в консоле пусто,не хочет искать через класс, может кто сталкивался или может помочь?
import requests
from bs4 import BeautifulSoup as BS
def get_token():
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 YaBrowser/24.10.0.0 Safari/537.36"}
url = 'https://www.binance.com/ru/support/announcement/новые-листинги-криптовалюты?c=48&navId=48&hl=ru'
r = requests.get(url=url, headers=headers)
soup = BS(r.text, 'lxml')
art = soup.find_all('a', class_='css-1w8j6ia')
for i in art:
ss = i.get('href')
print(ss)
get_token()
Ответы (1 шт):
Если вы посмотрите, какой текст страницы возвращает requests, то увидите, что там нет ваших элементов с необходимым классом. Скорее всего это связано с тем, что данные на странице подгружаются несколько позже.
В таком случае имеет смысл использовать playwright или selenium, чтобы найти нужные вам элементы.
Часть с поиском нужных тегов в функции get_links()
осталась практически неизменной, а вот в функции run_playwright()
мы как раз запускаем движок, открываем страницу, получаем контент, ищем нужные элементы, закрываем сессию и затем перебираем нужные нам ссылки, например, через списковое включение.
from bs4 import BeautifulSoup as BS
from playwright.sync_api import sync_playwright
link = "https://www.binance.com/ru/support/announcement/новые-листинги-криптовалюты?c=48&navId=48&hl=ru"
def get_links(text: str):
soup = BS(text, "html.parser")
return soup.find_all('a', class_='css-1w8j6ia', href=True)
def run_playwright():
with sync_playwright() as p:
browser = p.chromium.launch()
page = browser.new_page()
page.goto(link)
my_content = page.content()
browser.close()
return get_links(my_content)
art = run_playwright()
links = [f"https://binance.com{i.get("href")}" for i in art]