2011-05-14 84 views
0

我在Java中使用HTMLParser解析網頁時,在使用類HasAttributeFilter時遇到了一個奇怪的問題。使用HTMLParser解析HTML頁面時發生了一個奇怪的問題

我想在頁面中解析的元素是<span style="vertical-align: middle;"></span>,所以表達式應該是HasAttributeFilter filter = new HasAttributeFilter("style", "vertical-align: middle;");,對不對?是的,我用這個exp,但它不適用!但我相信有節點在頁面

在那之後,我申請了一些其他的EXP,如HasAttributeFilter filter = new HasAttributeFilter("class", "singlecolumnminwidth");到相同的頁面,而且,該節點是存在的,奇怪的事情發生了,這表達保護正常工作

有沒有人遇到過這個問題?幫我... 在此先感謝!

該頁的link

+1

你能發佈一段代碼嗎?謝謝 – gshauger 2011-05-14 17:47:09

+0

你確定span標籤沒有動態添加嗎? – 2011-05-14 17:52:59

回答

0

如果您獲取此屬性的值並將其打印到屏幕上,您會得到什麼結果?

你可能不得不逃脫一些字符,如空間或減號?認爲它可能有問題,在

之間的空間不vertical-align:middle;工作? 或者可能測試其負號是否導致錯誤

+0

1我沒有解析這個值,解析後,你可以得到一個** NodeList **,我只是打印出列表的大小(解析器解析的元素的數量,我得到了第一個正確的數字語句,第二個爲0) – Swofford 2011-05-15 02:52:17

+0

2不需要轉義任何字符(除了引號之類的字符),我將相同的屬性和值賦予另一個HTML,並解析它,「vertical-align:middle;」 ** **工作。 -_- b我不知道發生了什麼以及如何解釋,它就像一個幽靈。 – Swofford 2011-05-15 02:56:10

+0

String url1 =「http://www.amazon.cn/挪威的森林 - 村上春樹/ dp/B0011F9UUO/ref = sr_1_1?ie = UTF8&qid = 1305389060&sr = 8-1」; NodeFilter nf_span = new TagNameFilter(「span」); NodeFilter nf_comm_title = new AndFilter(nf_span,new HasAttributeFilter(「style」,「vertical-align:middle;」)); HasAttributeFilter nf_attri = new HasAttributeFilter(「style」,「vertical-align:middle;」); NodeFilter nf_attri1 = new HasAttributeFilter(「id」,「ap_container」); 解析器解析器=新的解析器(url1); parser.setEncoding(「UTF-8」); NodeList titlelist = parser.parse(nf_attri1); System.out.println(titlelist.size()); – Swofford 2011-05-15 03:27:13