Python (html) получить данные из динамически изменяющегося div / span с помощью bf4 - PullRequest
0 голосов
/ 02 августа 2020

Мне нужно получить BT C в реальном времени от https://cryptowat.ch/, но когда программа запускается 5 раз, она останавливается, и когда я проверяю сайт, я забанен из-за большого количества запросов .. Как мне получить данные, не обновляя весь сайт с помощью Python?

Вот код:

import bs4
import requests
from bs4 import BeautifulSoup

def btc():
    r= requests.get("https://cryptowat.ch/")

    soup = bs4.BeautifulSoup(r.text, "lxml")

    number = soup.find_all('a',{'class':'_1roDdymkPS2zplXEDcBm0L _3z3AqahoD2pN2R7vFue-0o pointer'})[1].find("span").text
    #btc = [span.text for span in number]
    return number
"""while True:
    print("A jelenlegi BTC ár : "+str(bekero))"""


while True:
    print("A jelenlegi BTC ár : "+str(btc()))
    time.sleep(3)

1 Ответ

0 голосов
/ 02 августа 2020

Вы должны использовать селен с chrome webdriver (https://chromedriver.chromium.org/getting-started)

По сути, то, что вы будете делать (используя код python), открыто chrome окна, направьте его на определенный веб-сайт, взаимодействуйте с веб-страницей, если хотите, а затем прочтите содержимое страницы и передайте его в BS4.

Обратите внимание, что библиотека запросов не загружает динамический c контент.

Пример:

from selenium import webdriver

browser = webdriver.Chrome()
browser.get(url)

source = browser.find_element_by_xpath("/html").get_attribute('outerHTML')

А затем передать источник страницы в BS4

...