Web scraping with python

Web scraping with python
CG
  • Rejestracja:ponad 6 lat
  • Ostatnio:około 3 lata
  • Postów:76
0

Hej,
dosłownie zaczynam drobny projekt wykorzystujący pythona. Chciałbym pobierać dane ze strony tradingview na temat aktualnego kursu złota.
Poniżej screenshot z platformy tradingview ( https://pl.tradingview.com/chart/dcfNG7Jx/?fbclid=IwAR3eE86KKYkpk_OfZyEV5EtcBqozziCpwKCvZ8mr3cxRUC_CFaQPUl9Ey-s )
screenshot-20181109200445.png

Na screenie zaznaczyłem dane które mnie interesują.
Mieszczą się między znacznikami "span"

Wstępnie wykorzystuję kod:

Kopiuj
import requests
from bs4 import BeautifulSoup

url = "https://pl.tradingview.com/chart/dcfNG7Jx/?fbclid=IwAR3eE86KKYkpk_OfZyEV5EtcBqozziCpwKCvZ8mr3cxRUC_CFaQPUl9Ey-s"
response = requests.get(url, verify=False)
soup = BeautifulSoup(response.text, 'lxml')

print(soup)

Dlaczego nie mam możliwości pobrania tych danych?

W jaki inny sposób dotrzeć do tych danych?
Do tej pory próbowałem różnych metod, jednak udało mi się jedynie pobrać dane "statyczne" - tzn takie które nie zmieniają się w czasie rzeczywistym.
Pozdrawiam :)

lion137
  • Rejestracja:około 8 lat
  • Ostatnio:2 minuty
  • Postów:4935
0

Maja publiczne API.


CG
  • Rejestracja:ponad 6 lat
  • Ostatnio:około 3 lata
  • Postów:76
0

Kumam, jednak nie zmienia to faktu, że chciałbym wiedzieć jak coś takiego zrobić :D

enedil
  • Rejestracja:prawie 12 lat
  • Ostatnio:4 dni
  • Postów:1027
1

Prosta sprawa, dane są aktualizowane na wyświetlanej stronie za pomocą JavaScriptu. Jeśli chcesz coś z tym zrobić, potrzeba Tobie silnika JS.

CG
  • Rejestracja:ponad 6 lat
  • Ostatnio:około 3 lata
  • Postów:76
0

Jak na razie zrobiłem coś takiego, jednak zdecydowanie nie jest to dobrym rozwiązaniem xD
Otwiera się strona z wykresem złota, odczytuje dane, wyświetlam po czym znów odświeżam stronę z tradingview.

Kopiuj
from selenium import webdriver
from bs4 import BeautifulSoup
from time import sleep

url = 'https://pl.tradingview.com/chart/dcfNG7Jx/'

driver = webdriver.Chrome("C:/Users/Desktop/PYTHON/SELENIUM/chromedriver.exe")
while(1):
    driver.get(url)
    sleep(5)
    html = driver.page_source
    soup = BeautifulSoup(html, "lxml")
    spans=soup.find_all('span', {'class': 'dl-header-price'})
    for span in spans:
        print(span.text.replace('USD','').strip())

driver.close()

Potrzebny silnik js? Czy byłbyś w stanie podpowiedzieć jak to ruszyć? Od czego zacząć?

edytowany 1x, ostatnio: CzakuGim
enedil
  • Rejestracja:prawie 12 lat
  • Ostatnio:4 dni
  • Postów:1027
1

No, używasz silnika JS tutaj. Właśnie coś takiego miałem na myśli.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.