2012-02-29 151 views
6
靜態HTML文件運行jQuery的

我試圖寫一個簡單的腳本,只需檢查網頁的特定值:從猛砸

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

我想從一個bash腳本來自動執行此每隔一段時間運行一次。我用Python也很好。我需要實質上發出一個HTTP請求,獲得響應,並有一種方法來智能地查詢結果。有沒有一個庫可以幫助我查詢部分?

回答

8

Xpath非常適合查詢html。

事情是這樣的:

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

Chrome開發工具,您可以使用搜索框的元素標籤來測試表達。在終端

快速運行:

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

萬歲XPATH!我想知道這是否有幫助。我不知道,因爲HTML!= XML,但是,嘿,如果它工作,它的工作原理。 – 2012-02-29 19:33:49

+1

正確的語法似乎是'xpath -e ...'。 – Tgr 2016-03-23 14:38:03

+0

'xpath'與非嚴格的XML HTML代碼很差。當它在100行的HTML片段上運行時,它會凍結一分鐘,然後隨着「不匹配的標籤」錯誤而死亡,顯然是因爲代碼有''而不是''。 – Tgr 2016-03-23 14:48:19

2

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

Spynner會讓你選擇使用jQuery語法從DOM元素。

還有其他的庫可以讓你解析HTML。 BeautifulSoup,lxml

+0

固定鏈接:https://pypi.python.org/pypi/spynner/ – 2016-04-09 02:23:08

0

我最近做了這樣的事情,使用nodejs + jsdom這兩個都有很好的文件記錄與低進入壁壘。

0

要解析HTML是不平凡普通的網站,因爲HTML可能不太守和DOM可以通過Java的腳本在運行時被修改,所以在這種情況下,解析HTML可能沒有意義。

最好的辦法是使用瀏覽器直接訪問DOM中,你可以使用一個無頭的瀏覽器,如phontomjs,所以你可以編寫腳本,並檢查任何你需要檢查