2009-02-26 18 views
12

Często potrzebuję wykonać proste skrobanie ekranu do wewnętrznych celów (tj. Usługa stron trzecich, z której korzystam, publikuje raporty tylko za pomocą HTML). Mam co najmniej dwa lub trzy przypadki tego teraz. Mógłbym użyć apache httpclient i utworzyć cały niezbędny skrobanie ekranu, ale zajmuje to trochę czasu. Oto mój zwykły proces:Superszybkie skrobanie ekranów?

  1. Otwórz Charles Proxy na stronie internetowej i zobacz, co się dzieje.
  2. Rozpocznij pisanie kodu Java za pomocą Apache HttpClient, przetwarzanie plików cookie, wiele żądań
  3. użyj kodu Jericho HTML, aby poradzić sobie z parsowaniem kodu HTML.

Chciałbym móc "nagrać sesję" szybko, a następnie sparametryzować rzeczy, które różnią się w zależności od sesji. Wyobraź sobie, że używasz Charlesa, aby pobrać wszystkie żądania HTTP, a następnie sparametryzować odpowiedni ciąg zapytania lub parametry post. Voila Mam skrypt http do wielokrotnego użytku.

Czy jest coś, co już to robi? Pamiętam, że kiedy pracowałem w dużej firmie, używaliśmy narzędzia o nazwie Load Runner firmy Mercury Interactive, które zasadniczo miało dobry sposób na nagrywanie sesji http i sprawienie, by była ona wielokrotnego użytku (do celów testowych). To narzędzie jest niestety bardzo drogie.

+0

Dziękuję za wszystkie odpowiedzi. Myślę, że wszystkie były dość cenne i pomogą innym stawić czoła temu samemu dylematowi. Postanowiłem spróbować Twill, ponieważ wydaje się to bardzo prostym językiem, a ponieważ w Pythonie jest to platforma wieloplatformowa. Wiele z sugerowanych narzędzi również wydawało się dobre - chociaż niektóre wydawały się specyficzne dla systemu Windows, a inne wydawały się mieć bardziej stromą krzywą uczenia się. – Ish

Odpowiedz

5

Chciałbym również spojrzeć na selen i/lub BeautifulSoup jeśli "chętnie skorzystam z Pythona. Jest też niezłe narzędzie testowe Twill do automatycznego testowania witryny, które może zrobić, co chcesz. Jest również napisany w języku Python i ma interfejs API języka Python, ale istnieje również uproszczony język poleceń, z którego można korzystać. Oto przykład z dokumentacją Twill ::

setlocal username <your username> 
setlocal password <your password> 

go http://www.slashdot.org/ 
formvalue 1 unickname $username 
formvalue 1 upasswd $password 
submit 

code 200  # make sure form submission is correct! 
+0

Dziękuję za wprowadzenie mnie do Twill. Myślę, że zajmuje się tym, czego potrzebuję. Chociaż nie ma możliwości nagrywania, myślę, że prostota jego języka skryptowego pozwoli mi zbudować bardzo szybki skrobanie ekranu. Dlatego wybrałem to jako odpowiedź na nagrodę. – Ish

+0

Ja również wybrałem twoją odpowiedź z powodu szybkiej próbki kodu, która pokazała mi, jak łatwo jest z niej korzystać. – Ish

4

Nie wspomnisz, do czego chcesz tego użyć; Jednym z rozwiązań jest po prostu "skrypt" przeglądarki internetowej za pomocą narzędzi, takich jak Selenium, jeśli przeglądarka internetowa powtórzyć swoje działania jest dopuszczalnym rozwiązaniem. Możesz użyć Selenium IDE, aby nagrać, co robisz, a następnie zmienić parametry.

9

HtmlUnit to skryptowa przeglądarka bezgłowy napisana w języku Java. Używamy go w przypadku bardzo skomplikowanych i skomplikowanych stron internetowych i zwykle robi to bardzo dobrze.

Aby uprościć wszystko, możesz uruchomić go w Jythonie. Wynikowy program przypomina raczej zapis, w jaki sposób można używać przeglądarki, niż ciężkiej pracy.

3

Chciałbym móc szybko "nagrać moją sesję", a następnie sparametryzować różne rzeczy, od sesji do sesji.

Jeśli masz wersję testową programu Visual Studio, funkcja testowania w Internecie wykonuje dokładnie to. Jeśli nie używasz VS lub chcesz samodzielnego narzędzia, odniosłem wielki sukces z OpenSpan. To coś więcej niż sieć, aplikacje dla Windows i java!

3

Selenium będzie moim pierwszym wyborem, ponieważ IDE pozwala zrobić wiele rzeczy w łatwy sposób, "nagrywając" sesję dla ciebie. Ale jeśli nie jesteś zadowolony z tego, co zapewnia, możesz również użyć modułu Python o nazwie Beautiful Soup, aby programowo przejść przez stronę internetową.

3

Coscripter

http://coscripter.research.ibm.com/coscripter

Uproszczenie procesu sieciowych.

CoScripter to system do nagrywania, automatyzacji i udostępniania przetwarza wykonywaną w internecie przeglądać r takich jak drukowania zdjęć on-line, z prośbą o wstrzymanie wakacje dla pocztową lub sprawdzanie czasu przylotu. Instrukcje dotyczące procesów są zapisywane i przechowywane w łatwym do odczytania tekście tutaj, na stronie CoScripter, , aby każdy mógł z nich skorzystać. Jeśli masz problemy z internetowym procesem , sprawdź, czy ktoś ma napisany dla niego CoScript!

Wget

Aby szybko rozbierać treści użyć wget:

wget -r -n -k -w 2 foo.com 

następnie zanalizować HTML lokalnie.

Twill

Oprócz selen, można również sprawdzić diagonal, towarzysza wiersza poleceń:

http://twill.idyll.org/

1

użyłem DomInspector do ręcznego sprawdzania odpowiednim miejscu do parametrize to struktura. Następnie prosty Apache HttpClient i ręczny analizator składni wykorzystujący tę sparametryzowaną strukturę. Zasadniczo mogłem wyodrębnić dowolne informacje z dowolnej witryny z niewielkimi zmianami parametrów. Jest to podobne do działania parsera SAX, wszystko, co musisz powiedzieć, to, w której sekwencji tagów chcesz zacząć przechwytywać dane. Na przykład google ma dość standardowy format wyników wyszukiwania. Tak więc wystarczy uruchomić trzecie wystąpienie "tabulatora" i zacząć otrzymywać tekst od pierwszego "div" aż do końca "/ div"

1

iMacro Skrypty, ale tylko dla Firefoksa Zakładam, że nie jest świetny w działaniu, ale potrafi poradzić sobie w najbardziej złożonych sytuacjach i może łatwo nagrywać.

+0

Użyłem iMacro. Działa wspaniale przy usuwaniu strony i zapamiętuje nazwę użytkownika, hasło ... itd., Tak jakby robiłeś to ręcznie. Będzie jednak wymagać przeglądarki Firefox. Więc jeśli myślisz o uruchomieniu skrobaka na bezgłowym (Gnome, KDE) serwerze bez menedżera okien, to masz pecha. – un33k

1

Program Internet Explorer obsługuje obiekty pomocnicze przeglądarki (BHO). Mogą uzyskać dostęp do IE 'HWND (uchwyt okna) i łatwo zeskrobać piksele z tego miejsca. Interfejs COM modelu IWebBrowser2 zapewnia również dostęp do żądań HTTP, a można odzyskać przeanalizowany dokument HTML poprzez IWebBrowser2::Document = IHTMLDocument/IHTMLDocument2 /IHTMLDocument3

1

Korzystanie z FireFox, powinno być możliwe zaimplementowanie dużej części dzięki potężnej obsłudze dodatków i ulepszeń, jednak to nie znaczy, że uruchomimy "bez głowy", ale naprawdę będziemy prawdziwą skryptowaną przeglądarką. Poza tym wydaje mi się, że przeczytałem, że przeglądarka Chrome w Google używa podobnej techniki do automatycznego testowania regresji.

1

Nie mogę osobiście ręczyć za to, ale jest darmowa wtyczka firefox: DejaClick Zainstalowałem ją na drugi dzień i zrobiłem z nią coś naprawczego, nagrywając, odtwarzając i edytując scenariusz. Wywołało ich bez dużej krzywej uczenia się. Jeśli twoim celem jest pokazanie czegoś w przeglądarce, to powinno wystarczyć.

Oferują usługi monitorowania transakcji internetowych, co oznacza, że ​​można wyeksportować skrypty do innych zastosowań, ale mogą one być zbyt zastrzeżone do użycia poza przeglądarką internetową/ich płatną usługą.

http://www.dejaclick.com/

1

bym sprawdzić Badboy. Uruchamia przeglądarkę IE, ale możesz dosłownie kliknąć rekord i zapisuje całą twoją aktywność.

Następnie można zautomatyzować przetwarzanie tego skryptu i wypełnić wartości od źródła danych (ODBC, Excel, itp ...)

Badboy Software

2

Spróbuj iOpus iMacros http://www.iopus.com/imacros/. Używam tego do skrobania ekranu i jego pracy bardzo dobrze i szybkość jest również bardzo dobra. To nie jest zbyt kosztowne.

Spowoduje zapisanie skryptu podczas przeglądania. Możesz następnie sparametryzować skrypt i wykonać go przy użyciu Javy, .net, itp.

1

Spojrzę na Fiddler sądząc po twoich prośbach zrobi wszystko, czego potrzebujesz.

2

Python i Perl mają moduł o nazwie Mechanize (WWW :: Mechanize for perl), który sprawia, że ​​easy działa programowo (wypełnianie formularzy, obsługa plików cookie itp.).

Tak, Python + BeautifulSoup (świetny html/xml parser) + mechanizacji (funkcje przeglądarek) = super łatwy/szybki skrobak

+1

Szybkie pytanie, Czy można zmechanizować obsługę AJAX? – un33k