2009-09-25 107 views
2

我是XPath新手。我有網頁的HTML源XPath表達式

http://london.craigslist.co.uk/com/1233708939.html 

現在我想從上面的頁面中提取

  1. 全日
  2. 電子郵件中的數據 - 僅低於日

我也想找到頁面上存在的按鈕「回覆此帖」

http://sfbay.craigslist.org/sfc/w4w/1391399758.html 

任何人都可以幫我寫上述三個數據的三個XPath表達式。

回答

5

你不需要自己寫這些,甚至不需要自己寫出來。如果你使用Firebug插件,進入頁面,右鍵單擊你想要的元素,點擊'檢查元素',Firebug將在瀏覽器底部的瀏覽器中彈出HTML。在HTML查看器中右鍵單擊所需的元素,然後單擊「複製XPath」。

這就是說,你正在尋找(對於#3)中的XPath表達式爲:

/HTML /體/格[4] /形式/按鈕

...通過所述的方法獲得如上所述。

1

從你的第一頁開始,這是不可能的,因爲這不是xpath的工作方式。爲了讓xpath表達式選擇「某些東西」必須是節點(即元素)的東西
第二頁相當容易,但爲了做到這一點(或任何可以使確定你的按鈕是唯一的)。例如,如果你確信文本「回覆這個帖子」正確識別按鈕只是做與
//button["Reply to this post"]

4

我注意到DTD HTML是爲4/01第一環節過渡,而不是XHTML,所以有不能保證這是一個有效的XML文檔,並且它可能不會被XML解析器正確加載。事實上,我看到幾個標籤沒有正確關閉(即<小時>等)

我不知道第一個手頭,第三個只是由亞歷克斯回答,但第二個是/ html/body/a [0]。

+0

除了ristonj的迴應,還有許多用於Ruby,Java的[[你命名它])的HTML消毒器,它將把SGML文檔(如HTML 4.01)轉換爲XML,如果你想以編程方式。 – 2009-09-25 15:11:59

+0

是馬歇爾。我通過Java程序來抓取頁面。首先,我得到頁面的html源代碼,然後想要使用「正則表達式」或「xpath」來刮取所需的信息。我如何使用HTML消毒器將字符串格式的html源文件轉換爲SGML文檔。有沒有任何外部庫。如果是,那麼請告訴我該jar文件的下載URL。 主要關心的是程序的速度。 – 2009-09-25 15:18:41

+0

@Yatendra Goel:我已經使用WebHarvest庫(http://web-harvest.sourceforge.net)在過去的項目中取得巨大成功。我建議你從那裏開始。它可以讓你聲明性地在配置文件中定義刮刀,然後運行它,而不必「手動」地刮寫自己編寫的代碼頁面。然後,您可以將變量值存儲在變量中,並檢索它們以便在您的代碼中使用,這比您目前的操作要容易得多。 – 2009-09-25 17:19:24