2016-09-14 54 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; } 
相关问题