• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Python - wykonywanie kodu javascript (scraping)

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
0 głosów
472 wizyt
pytanie zadane 23 października 2015 w Python przez KULTI Obywatel (1,400 p.)
edycja 23 października 2015 przez KULTI

Witam serdecznie,
z chęcią przepisałbym javascript do pythona jednak poziom zabezpieczenia jest wysoki(naprawdę wysoki), dlatego potrzebuje narzędzia które będzie wykonywało pythona(potrzebuje pobrać źródło strony z wykonanym javascriptem).
- Chciałbym aby dodatek miał wbudowaną obsługę javascript(a nie korzystał z komponentów na komputerze typu ie.)

 

import requests

r = requests.get('link')

print(r.text)

 

lub nawet 2 :D
 

import requests
print(requests.get('link').text)

Tak jak to zrobię w 3 linijkach w request, chciałbym wykonać w czym innym, umożliwiającym pobranie źródła- lecz z wykonanym javascriptem. :)
 

2 odpowiedzi

0 głosów
odpowiedź 23 października 2015 przez furas Maniak (53,800 p.)

W takich przypadkach ludzie używają Selenium bo ono potrafi wykorzystywać przeglądarkę lub symulować działanie przeglądarki - czyli oprócz pobierania danych z serwera (czyli to co robi requests) potrafi też renderować stronę (w tym wykonywać kod JavaScript). 

Selenium może wykorzystywać Firefox lub Chrome ale ma też (tak zwane) drivery, które wykorzystują inne narzędzia do renderowania strony w pamięci bez potrzeby wyświetlania na ekranie. Zdaje się, że jeden z takich driverów wykorzystuje PhantomJS.

---

Jest też Ghost.py, który wykorzystuje klasę WebKit z modułu PyQt do renderowania strony w pamięci http://jeanphix.me/Ghost.py

0 głosów
odpowiedź 23 października 2015 przez Bantu Nałogowiec (34,250 p.)
Nie wiem dokładnie co chcesz zrobić, ani na jakiej stronie chcesz to zrobić, ale w większości przypadków gdy JavaScript ładuje jakieś dane zwraca nam dane w formacie JSON, które można dość łatwo dojrzeć w przeglądarce, wtedy wystarczy tylko sprawdzić jakie zapytanie za co odpowiada, sprawdzić plik, który ładuje dane i jakie dane są mu potrzebne. Wtedy wystarczy tylko do odpowiedniego pliku wstrzyknąć odpowiednie dane i mamy załadowany plik tak jakby to zrobił JS. Np. na Allegro częśc danych produktów jest ładowanych w osobnym zapytaniu JS, więc wystarcza wysłać odpowiedniego hasha do tego pliku i mamy załadowany cały HTML. Może to tak zawile brzmi teraz, bo też chaotycznie o tej porze pisze, ale w praktyce jest dość proste i nie potrzeba jakiś kobylastych bibliotek jak Selenium (chyba to była kobylasta biblioteka), wystarczy coś do przesyłanai requestów i coś do parsowania HTML.

Podobne pytania

0 głosów
2 odpowiedzi 652 wizyt
–1 głos
1 odpowiedź 307 wizyt
0 głosów
1 odpowiedź 604 wizyt
pytanie zadane 19 sierpnia 2022 w Python przez NewbieProgrammer Początkujący (480 p.)

93,433 zapytań

142,428 odpowiedzi

322,661 komentarzy

62,796 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

...