如何将div元素的内容与CSS选择器分开?
问题描述:
比方说,我有这样的事情:如何将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代码不包含任何错误,请不要修改,这是我写的。我想获取文本的网站不属于我,所以我不能更改代码。)
答
简单的答案。你不能。 CSS选择器定位节点,而不是某些文本中的特定字母。当你考虑伪选择器时有一些小例外,但你无法单独用CSS完成你想要的东西。
我最好的建议是修改HTML并将您想要在<span>
元素中定位的内容封装起来,并给它一个您实际可以定位的CSS类。
编辑:(既然找出你不能修改页面,你正在使用Jsoup去取。)
由于您使用Jsoup来抓取网页和你的目标节点您只需还有一个步骤来抓住你的文字。基本上,在选择节点并获取内部文本之后,只需在其上运行一个正则表达式并在第一个周期之前抓取所有内容。
你的正则表达式应该是在Java中是这样的:"(.*\\.)"
答
可以“获取”你想要的文字,假设你的意思是“选择”,它为应用CSS规则的目的,通过编写规则顶部然后覆盖它为孩子:
.c1 { color: rebeccapurple; }
.c1 * (color: initial; }
如果您只想选择该文本,您需要将其包装在一个范围内。 – kinakuta
,因为你明显处理'.innerText',真的没有简单的方法来做到这一点。最简单的方法是用另一个元素包围特定的文本,也许是'',或者如果文本是静态的,那么你的解析器将所有内容解析到第一个时间段。 – sircapsalot
这对jQuery来说是微不足道的。许多网站已经加载。如果这是一个选项,请更新您的标签。 – isherwood