Как парсить ссылку если нет классы python requests
Добого времени суток! Нужно сделать парсер сайта. Мне нужно получить текст заголовка что являеться ссылкой, но в теге нет никакого href или класса тег только в div class="mainTitle___mbpq1" но я никак не могу получить заголовок. Пробовал этот способ:
import requests as req
from bs4 import BeautifulSoup as BS
resp = req.get('https://www.kucoin.com/news/categories/listing').text
print(resp)
def get_catalog_data(html):
soup = BS(html, 'lxml')
knifes = soup.find('a')
print(knifes)
get_catalog_data(resp)
выводить None
Если просто хочу вывести весь html то не выводиться весь
Он просто как будто бы пустой
Как решить? Заранее спасибо!
Ответы (2 шт):
Указанный сайт полностью построен на скриптах. То есть, чтобы увидеть страницу необходимо её открыть. Обычно используют для этих целей Selenium(https://ru.stackoverflow.com/questions/1064080/Как-и-чем-лучше-парсить-сайт-с-spa-на-питоне), но можно пойти другим путем.
Можно через "инструменты разработчика"- "сети", подсмотреть куда уходит запрос при нажатии нажатии на "ссылку". В твоем случае, ссылка, которая возвращает json-ответ c содержанием всей информации (список доступных листингов, заголовки, ссылки на них) - https://www.kucoin.com/_api/cms/articles?page=1&pageSize=10&category=listing&lang=ru_RU.
Инструменты разработчика открыть - «Ctrl» + «Shift» + «I».
Скриншоты места, где посмотреть ссылку:
Также на всякий случай оставлю ссылку на одного листинга в списке- https://assets.staticimg.com/cms/articles/ru-kucoinfutures-launched-aave-ksm-contracts.json?t=9060078
Нашел решение с помощью библиотеки selenium
import time
from selenium import webdriver
EXE_PATH = r'C:\chromedriver.exe'
driver = webdriver.Chrome(executable_path=EXE_PATH)
while True:
driver.get('https://www.kucoin.com/news/categories/listing')
time.sleep(2)
print(driver.find_element_by_xpath('//*[@id="root"]/div/div/div[3]/div/div[2]/div[1]/div/div[1]/div/div[2]/div[1]/a').text)
