Niestety z przykrością muszę stwierdzić, że otodom postanowił trochę namieszać w statystykach olxdata i popsuć liczbę ogłoszeń prezentowaną u nich na stronie. Ta błędna wartość jest aktualnie zaciągana przez mój serwis i na razie nie da się z tym nic zrobić. Miejmy nadzieję, że to zwykły błąd i wszystko niedługo wróci do normy. Może to być również celowe i w takim przypadku prawdopodobnie zabawa się skończyła na jakiś czas.
W przyrodzie jednak nic nie ginie i jak znika jedna funkcjonalność to w to miejsce pojawia się kolejna. Teraz możecie sobie wszystko oglądać w formie sortowanej tabelki (aktualnie bez otodom).
Miejmy nadzieję, że to zwykły błąd i wszystko niedługo wróci do normy. Może to być również celowe i w takim przypadku prawdopodobnie zabawa się skończyła na jakiś czas.
@pastibox: jest celowe. Duza szansa ze wiedza o Twojej stronie. A ze wystartowali ostatnio z narzedziem Otodom Analytics, dodatkowo (sporo) platnym dla agencji, to pewnie beda tak zmieniac i ograniczac API aby nie wyplywaly na zewnatrz zadne dane statystyczne
@whoru: To pobiera z jednego miejsca. Ale może zamiast takiego najprymitywniejszego scrapingu puszczać najpierw skrypt na pythonie i selenium - i liczyć ręcznie.
@pastibox: Wygląda na błąd bo nawet stronicowanie działa do maksymalnie 50 strony (36*50 = 1800). Byłoby to dość dziwne bo ogłoszenia dalszych stron byłyby dostępne tylko i wyłącznie po zastosowaniu filtrów.
Jako workaround możnaby zamiast jednego zapytania zrobić zapytania po przedziały metrów - od 0 do 9, od 10 do 19, od 20 do 29 it'd, a potem zsumować.
@pastibox: O, tu liczy dobrze. Scrapuj z tego miejsca.
No niestety z tego nie mogę. Bo liczbe na tym buttonie podmienia java script (przeglądarka). Ja pobieram dane z response html I dobrej pory nie potrzebowałem aby strona była obrobiona przez js. Jeszcze się nie zastanawiałem jak to teraz by można scrappowac ale to będzie już wyższa szkoła jazdy.
@pastibox: Doinstaluj do pythona selenium, nagraj sekwencję i sobie wyrzucaj do txt.
Na serwerze weź takie nagłówki i doinstaluj co trzeba to będzie się zachowywał jak chrome:
import datetime from selenium import webdriver from selenium.webdriver.chrome.options import Options from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
@mickpl jak będę miał trochę czasu to pomyślę nad tym. Teraz mam to napisane w .net core i używam biblioteki Html Agility Pack. Zobaczymy co da się zrobić
@pastibox: No to odpal skrypt na jakimś linuchu, jak już będzie selenium to może logować się od razu na wypok, na jakiś tag #otodomrawdata a potem Azure może pobierać z tagu XD
W przyrodzie jednak nic nie ginie i jak znika jedna funkcjonalność to w to miejsce pojawia się kolejna.
Teraz możecie sobie wszystko oglądać w formie sortowanej tabelki (aktualnie bez otodom).
Miłej zabawy!
https://olxdata.azurewebsites.net/zestawienie
#nieruchomosci
@pastibox: jest celowe. Duza szansa ze wiedza o Twojej stronie. A ze wystartowali ostatnio z narzedziem Otodom Analytics, dodatkowo (sporo) platnym dla agencji, to pewnie beda tak zmieniac i ograniczac API aby nie wyplywaly na zewnatrz zadne dane statystyczne
@pastibox: Oczywiście ( ͡° ͜ʖ ͡°)
https://www.otodom.pl/pl/wyniki/sprzedaz/mieszkanie/cala-polska?viewType=listing
Jako workaround możnaby zamiast jednego zapytania zrobić zapytania po przedziały metrów - od 0 do 9, od 10 do 19, od 20 do 29 it'd, a potem zsumować.
Komentarz usunięty przez autora
@pastibox: Możliwe, oni ciągle coś tam mieszkają. Może jakiś geniusz zbrodni wymyślił, że ograniczy do 50 stron, aby była lepsza optymalizacja.
No niestety z tego nie mogę. Bo liczbe na tym buttonie podmienia java script (przeglądarka). Ja pobieram dane z response html I dobrej pory nie potrzebowałem aby strona była obrobiona przez js. Jeszcze się nie zastanawiałem jak to teraz by można scrappowac ale to będzie już wyższa szkoła jazdy.
Na serwerze weź takie nagłówki i doinstaluj co trzeba to będzie się zachowywał jak chrome:
import datetime
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
chrome_options = Options()
chrome_options.add_argument("--headless")
chrome_options.add_argument('--no-sandbox')
driver = webdriver.Chrome('/usr/bin/chromedriver', options=chrome_options)
Do selenium masz wtyczkę do
https://github.com/puppeteer/puppeteer#example
Myślę, że otomoto wystartuje ze swoim nrzędziem analitycznym za konkretny abonament, ale moge sie mylic.