2016-09-14 113 views
-1

比方說,我有這樣的事情:如何將div元素的內容與CSS選擇器分開?

<div class="c1"> 
    BlahBlahBlah Some text that I want to fetch. 
    <br/> 
    <div class="c2">something does not important.</div> 
    <a href="blabla.html">a link text</a> 
</div> 

我只想取「BlahBlahBlah我想要寫一些文字來獲取。」文本。當我使用「div.c1」css選擇器時,它給出了「BlahBlahBlah我想要獲取的一些文本,某些東西並不重要,鏈接文本」。

如何獲取我想要的文本? (注意:HTML代碼不包含任何錯誤,請不要修改,這是我寫的。我想獲取文本的網站不屬於我,所以我不能更改代碼。)

+0

如果您只想選擇該文本,您需要將其包裝在一個範圍內。 – kinakuta

+0

,因爲你明顯處理'.innerText',真的沒有簡單的方法來做到這一點。最簡單的方法是用另一個元素包圍特定的文本,也許是'',或者如果文本是靜態的,那麼你的解析器將所有內容解析到第一個時間段。 – sircapsalot

+0

這對jQuery來說是微不足道的。許多網站已經加載。如果這是一個選項,請更新您的標籤。 – isherwood

回答

1

簡單的答案。你不能。 CSS選擇器定位節點,而不是某些文本中的特定字母。當你考慮僞選擇器時有一些小例外,但你無法單獨用CSS完成你想要的東西。

我最好的建議是修改HTML並將您想要在<span>元素中定位的內容封裝起來,並給它一個您實際可以定位的CSS類。

編輯:(既然找出你不能修改頁面,你正在使用Jsoup去取。)

由於您使用Jsoup來抓取網頁和你的目標節點您只需還有一個步驟來抓住你的文字。基本上,在選擇節點並獲取內部文本之後,只需在其上運行一個正則表達式並在第一個週期之前抓取所有內容。

你的正則表達式應該是在Java中是這樣的:"(.*\\.)"

+0

謝謝,但我想獲取一些文本的網站不屬於我。所以,我無法修改代碼。 – umitkilic

+0

所以你可以修改的是CSS?你如何與這個網站互動? – arjabbar

+0

我只是提取文本並在移動應用程序中顯示它。文字日復一日地變化。 – umitkilic

0

可以「獲取」你想要的文字,假設你的意思是「選擇」,它爲應用CSS規則的目的,通過編寫規則頂部然後覆蓋它爲孩子:

.c1 { color: rebeccapurple; } 
.c1 * (color: initial; } 
相關問題