Witam pytongowców!

Dziekuje za nakierowanie mnie na rozwiązanie mojego ostatniego problemu :)

Niestety mam kolejne pytanie - w jaki sposób mogę wyłączyć javascript na stronie używając selenium?

Myślałem nawet o połączeniu scrapy z selenium - bez js'a potrzebuje sprawdzić jedną wartość, jeśli jest zmiana z x na y to ma dopiero wtedy selenium wykonać swoją robotę. Zależy mi oczywiście na szybkości działaniu (to sprawdzanie).
Może scrapy to dobry pomysł ale nie wiem
@Elkoss: oo nie wiedziałem ze tak można. Przetestuje. Zależy mi na tym żeby selenium bez js'a sprawdzał jakąś wartość -- jeśli się zmieni z x na y to wtedy odświeża stronę juz z js i przechodzi do kolejnych kroków. Jak wspomniałem wcześniej priorytetem jest szybkość tego sprawdzenia :)

Dam znać co udało się stworzyć ( ͡° ͜ʖ ͡°)
mam problem z #airflow
napisałem sobie spidera w #scrapy, na końcu skryptu utworzyłem funkcję:

def extract_data() -> str:
process = CrawlerProcess()
process.crawl(JnkLFMSpider)
process.start()
return JnkLFMSpider.custom_settings['FEED_URI']

importuję funkcję do innego skryptu:

from moj_modul import extract_data
extract_data()
i działa, 3 sekundy i dane pobrane :)

ale gdy chcę uruchomić extract_data z moj_modul przez PythonOperator w Airflow, to nie działa - log od razu pęcznieje do setek megabajtów, a jedyne co w nim widać
#scrapy #python #programowanie

siema. nie wiem gdzie robię błąd. To nie pierwszy crawler jakiego piszę ale miałem długą przerwę i gdzieś daję ciała.

chcę ściągnąć ceny z castroramy. Dla przykładu niech będą to dywany. Korzystając z biblioteki #scrapy zadaję takie pytanie:

response.xpath('//span[contains(@class, "price-box__value")]/text()').extract()
niestety dostaję pustą listę.

link do strony jaką mam podpiętą pod fetcha: https://www.castorama.pl/produkty/urzadzanie/wykonczenie-podlogi/dywany.html

na załączonym zdjęciu widać, że zapytanie jest dobre. Nazwy tych dywanów pobiera mi tak jak trzeba.
k.....u - #scrapy #python #programowanie

siema. nie wiem gdzie robię błąd. To nie ...

źródło: comment_1636835231e29yHol9ahlIgnlpX5VkFm.jpg

Pobierz
Hej, zacząłem się uczyć python i z ciekawości odskoczyłem na chwilę i zacząłem robić poniższy tutorial: https://analityk.edu.pl/web-scraping-z-uzyciem-biblioteki-scrapy-w-pythonie/. Problem pojawia się przy ostatniej komendzie: scrapy crawl truecar -o truecar.csv - terminal zwraca mi, że nie ma takiej komendy, sprawdzając internet wyczytałem, że muszę być w jakimś odpowiednim miejscu w moim projekcie w pycharm, żeby komenda była dostępna, jednak kompletnie nie wiem co zrobić. Ktoś poratuje i wytłumaczy jak noobkowi? :) Jescze jak w
@Henryhenry: dzięki za odpowiedź, tak muszę jeszcze doczytać na spokojnie o tych wirtualnych środowiskach i wielu innych rzeczach, próg wejścia jest dość spory hah :) póki co wieczorem spróbuję wybrać sobie inną stronkę do testów bo wybrałem chyba zbyt skomplikowaną i przetestuje spidera na czymś prostym jak te stronki z tutoriali czy w ogóle dziala.
@Tomz: spoko. To prawda, ale z każdym tutorialem i projektem akumuluje się całkiem sporo wiedzy i potem wszystko się pięknie w całość układa :) Co do tutoriali, to jeśli dopiero zaczynasz to warto najpierw robić kropka w kropkę tak jak jak w artykułach i dopiero potem powtarzać ze zmienionymi danymi. Z tego co piszesz wynika że problem nie leży w złożoności strony którą scrapujesz, tylko z samym użyciem narzędzia - stąd
@AldoAldo: Tylko jeżeli nie masz doświadczenia, to poczytaj o tym jak uchronić się przed banem. Na jednych warsztatach uczyłem grupę 10 osób scrapowania serwisu aukcyjnego i następnego dnia cały budynek miał na niego bana xd
@Groosik: @AldoAldo: @wellfix
tu macie cos gotowe:
co robi?

sprawdza ilosc stron z nieruchomosciami

z kazdej strony zbiera pojedyncze ogloszenie do listy,

lista ta jest trakotowana set i do listy > przez co wywala sie duplikaty

wystarczy teraz wejsc w kazdy link z ostatniej listy toCheck i wybrac co potrzeba

robi sie to tak:
for x in toCheck:
pagereq=r"{}".format(x)
respond = requests.get(pagereq)
dane = str(respond.text.encode("utf-8"))

penir mozna by cos poprawic
@dog_meat:
"

The 405 (Method Not Allowed) status code indicates that the method
received in the request-line is known by the origin server but not
supported by the target resource."

idk jak dla mnie ten scenariusz który podaję nie wydaje się sprzeczny z opisem ale przyznaję że nie jestem ekspertem
@waldenstrom: to, co zacytowałeś, to dokładnie to, o czym pisałeś. Czyli metoda (czasownik HTTP, czyli np GET albo POST) , którą wysłałeś w zapytaniu nie jest obsługiwana dla danego zasobu (endpointu)
Zablokowali mi IP na stronie za crawlowanie po niej. Chce dodać opcje w #scrapy żeby używał proxy, lecz co połączy się z nową okazuje się że wchodzi na jakąś gówno stronkę z proxy i nie widać tej na która próbuje się dostać.. A przez przeglądarkę bez problemu strona się ładuje..

Ustawiłem USER_AGET taki jak mam w przeglądarce i dalej to samo...

#programowanie #python #webdev #halp
Nie wiem czemu, ale chyba yield w #python `e mi nie dziala? :( pisze sobie crawlera w #scrapy, chce aby przeszukał jedna strone zebrał informacje które generują mi nowy linki do stron:

http://pastebin.com/LqxqbC42

A w konsoli wyskakuje takie coś:

2016-06-03 11:05:17 [scrapy] INFO: Spider opened
2016-06-03 11:05:17 [scrapy] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min)
2016-06-03 11:05:17 [scrapy] DEBUG: Telnet console listening on 127.0.0.1:6024
2016-06-03
Tutaj jeszcze staty scrapiego powinien na conajmniej 10k stron wejsc a zatrzymuje sie na drugiej:

2016-06-03 12:02:51 [scrapy] INFO: Dumping Scrapy stats:
{'downloader/requestbytes': 232,
'downloader/request
count': 1,
'downloader/requestmethodcount/GET': 1,
'downloader/responsebytes': 40992,
'downloader/response
count': 1,
'downloader/responsestatuscount/200': 1,
'finishreason': 'finished',
'finish
time': datetime.datetime(2016, 6, 3, 10, 2, 51, 370000),
'logcount/DEBUG': 3,
'log
count/INFO': 7,
'offsite/domains': 1,
'offsite/filtered': 10424,
'requestdepthmax': 1,
'responsereceivedcount': 1,