2017-03-13 16 views
1

從這個網址:XPath表達式爲該局網站

https://www.walsall.gov.uk/Waste/bincollections/Details/100071042591

我想提取網頁中的indivual斌日期。

當我使用Chrome inpsect,並複製XPath上述第一二進制日期,我得到以下XPath:

//*[@id="main"]/table[1]/tbody/tr[2]/td[2] 

這看起來不錯,但我從我的$ xpath->查詢得到的長度爲零目的。

然而,當我把我的查詢爲:

//*[@id="main"]/h3[2] 

我得到正確的值(綠色斌,回收)。

誰能告訴我爲什麼第一個XPath查詢不起作用?這對我來說完全合乎邏輯。

+0

首先'XPath'返回'22/03/2017',而// * [@ id =「main」]/h3 [2]'返回'綠色垃圾箱(回收)'。你的表情中有不同的目標標籤,所以不同的結果是正常的......你能澄清你的問題嗎? – Andersson

+0

對不起,問題是第一個XPath沒有返回任何數據。之後我發現這是因爲Chrome插入的tbody標籤導致問題。 h3 [2]只是一個測試,以確保我正在接收數據。 – Chud37

回答

0

的問題是與<tbody>標籤,我把說出來,並用此結束:

//*[@id="main"]/table[1]/tr[2]/td[2] 

我的猜測是,當我檢查瀏覽器插入TBODY標籤,當你檢查,但實際上不存在的服務器提供的原始HTML。

+0

這實際上並沒有從頁面返回任何東西......嘗試一下:打開chrome,轉到頁面,f12調出開發工具,控制檯選項卡,鍵入'$ x(「// * [@ id ='main ']/table [1]/tr [2]/td [2]「)'並輸入,沒有結果吧?但是如果你嘗試'$ x(「// * [@ id ='main']/table [1]/tbody/tr [2]/td [2]」)',它會返回'22/03/2017'正如Andersson所說。你可能只是檢查了錯誤的元素。 – becixb

+0

@ becixb好吧,因爲鉻檢查器是*它添加工具的tbody,但在頁面的實際原始來源中,tbody不存在,所以當您使用php運行xpath查詢時,您會得到正確的結果。 – Chud37