Próbuję zeskanować witrynę, patrząc na jej kod HTML w przeglądarce Chrome i przechwytując dane za pomocą Nokogiri. Problem polega na tym, że niektóre tagi są generowane dynamicznie i nie pojawiają się z otwartym żądaniem (url) przy korzystaniu z open-uri. Czy istnieje sposób, aby "zmusić" stronę do dynamicznego generowania jej treści, aby narzędzie takie jak otwarte uri mogło być czytane?Uzyskiwanie dynamicznie generowanego kodu HTML za pomocą Nokogiri/Open URI
Odpowiedz
Jeśli odczytanie go za pomocą open-uri nie generuje potrzebnej zawartości, istnieje duże prawdopodobieństwo, że klient generuje treść przy użyciu Javascript.
To może być dobra wiadomość - sprawdzając żądania AJAX, które robi strona, możesz znaleźć źródło JSON, którego szukasz, a następnie możesz je bezpośrednio prosić i parsować. Dzięki temu uzyskasz dostęp do swoich danych bez konieczności przeszukiwania kodu HTML - pod ręką!
Jeśli to nie działa z jakiegoś powodu, będziesz musiał otworzyć stronę z jakąś przeglądarką, pozwolić jej wykonać skrypt JavaScript po stronie klienta, a następnie zrzucić wynikowy DOM do HTML. Coś takiego jak PhantomJS jest doskonałym wyborem do tego rodzaju pracy.
wskazówka # 1 zaoszczędziła mi mnóstwo czasu. –
- 1. Udostępnianie dynamicznie generowanego obrazu za pomocą Django
- 2. Uzyskiwanie kodu HTML za pomocą Pycurl
- 3. Pokrycie kodu, analiza i profilowanie dynamicznie generowanego kodu
- 4. Uzyskiwanie kodu HTML za pomocą MozRepl i Mechanize :: Firefox
- 5. Debugowanie dynamicznie skompilowanego kodu za pomocą Roslyn
- 6. Wyświetlaj nagłówki HTTP za pomocą Open :: URI?
- 7. Jak dynamicznie ustawiać atrybuty danych HTML5 za pomocą reakcji?
- 8. Wyświetlanie kodu HTML na winformie
- 9. Uzyskiwanie danych profilu użytkownika Facebooka za pomocą kodu Javascript
- 10. Uzyskiwanie kodu źródłowego strony za pomocą interfejsu UIWebView
- 11. Uruchamianie aplikacji za pomocą intencji URI
- 12. Uzyskiwanie wymiarów elementu za pomocą SCSS?
- 13. Czyszczenie pola przesyłania pliku HTML za pomocą kodu JavaScript
- 14. Przekazywanie kodu HTML do szablonu za pomocą Flask/Jinja2
- 15. Jak dodać efekt przełączania za pomocą zwykłego kodu html?
- 16. Uzyskiwanie elementu za pomocą xpath i cheerio
- 17. Uzyskiwanie NSRunningApplication za pomocą ProcessSerialNumber
- 18. Dodawaj dynamicznie pola wejściowe za pomocą wtapów
- 19. Załaduj skrypt dart dynamicznie za pomocą strzałki
- 20. Jak używać dynamicznie generowanego obiektu jako źródła danych generatora CodeEffects
- 21. Uzyskiwanie szerokości paska przewijania za pomocą JavaScript
- 22. Uzyskiwanie wybranych opcji za pomocą querySelectorAll
- 23. Jak dodać onclicklistener do dynamicznie generowanego widoku tekstowego?
- 24. Nie można uruchomić dynamicznie generowanego pliku wsadowego z Java
- 25. Uzyskiwanie atrybutu href obrazu za pomocą Javascriptu
- 26. Zrozumienie kodu generowanego przez prosty program w języku C
- 27. Uzyskiwanie pełnego źródła strony za pomocą Javascriptu
- 28. Jak odczytać plik z identyfikatora URI za pomocą StreamReadera?
- 29. Uzyskiwanie wartości wielu elementów za pomocą Jquery
- 30. Konwersja HTML na PDF za pomocą PHP?
Zobacz [mechanise] (http://mechanize.rubyforge.org/). Myślę, że może zrobić to, co chcesz. – Aaronneyer
W zależności od * sposobu * tej witryny generuje swoją zawartość, może być konieczne wykonanie jej kodu JavaScript. – tessi
Czasami zmechanizowane zaklinowane w złożonych witrynach internetowych. Jeśli JRuby jest opcją, a mechanizacja nie działa, przyjrzę się także [Celerity] (http://celerity.rubyforge.org/). – yonosoytu