2012-02-29 7 views
6

Próbuję napisać prosty skrypt, aby po prostu sprawdzić stronę internetową dla określonej wartości:Running jQuery na statycznym pliku HTML z Basha

$("a#infgHeader").text() == "Delivered"; 

Chciałbym zautomatyzować ze skryptu bash być uruchamiane w odstępach. Nie przeszkadza mi też używanie Pythona. Muszę zasadniczo utworzyć żądanie HTTP, uzyskać odpowiedź i mieć sposób inteligentnego zapytania o wynik. Czy istnieje biblioteka, która pomoże mi w części zapytań?

Odpowiedz

8

Xpath jest świetny do wysyłania zapytań do html.

coś takiego:

//a[@id='infgHeader']/@text 

W narzędziu chrom dewelopera można użyć pola wyszukiwania w karcie Elementy do testowania ekspresji.

Szybki bieg w terminalu:

$echo '<div id="test" text="foo">Hello</div>' | xpath '//div[@id="test"]/@text' 
Found 1 nodes: 
-- NODE -- 
text="foo" 
+0

Brawo dla XPath! Zastanawiałem się, czy przyda się tu pomoc. Nie wiedziałem, ponieważ HTML! = XML, ale hej, jeśli to działa, działa. –

+1

Poprawna składnia wygląda na "xpath -e ...". – Tgr

+0

'xpath' działa słabo z nie-ściśle-XML kodem HTML. Po uruchomieniu go na 100-liniowym fragmencie kodu HTML, blokuje się na minutę, a następnie obumiera z błędem "niezgodnego znacznika", prawdopodobnie dlatego, że kod miał '' a nie ''. – Tgr

2

http://pypi.python.org/pypi/spynner/1.10

Spynner pozwoli Ci wybrać elementy z DOM za pomocą składni jQuery.

Lub istnieją inne biblioteki, które umożliwiają analizowanie kodu HTML. BeautifulSoup, lxml

+0

Naprawiono link: https://pypi.python.org/pypi/spynner/ –

0

Niedawno zrobiłem coś takiego przy użyciu nodejs + jsdom oba są dobrze udokumentowane niską barierą wejścia.

0

do analizowania HTML nie jest trywialne dla ogólnych stron internetowych, ponieważ nie może być html i prefekt DOM może być modyfikowane poprzez skrypt java na bieżąco, więc parsowania HTML nie może mieć sens w takim przypadku.

Najlepszym sposobem jest użycie przeglądarki i bezpośredni dostęp do DOM, na które można użyć bezgłowe przeglądarkę jak phontomjs, dzięki czemu można go skrypt i sprawdź, co trzeba sprawdzić