5
回答
Jsoup抽取html内容,用的Element.text()方法,为什么抽取出来的内容没有标点符号呢?
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   

对某一个百度百科的页面进行解析,为了拿到里面的主干内容。程序如下:

public class TestJsoup2 {

    
        public static void main(String[] args) throws Exception {
            
            int id = 1009;
            
            File input = new File("/htmldata/1-1w/1009.html");
            Document doc = Jsoup.parse(input, "UTF-8", "");
            Elements content = doc.select("div.para");
            ListIterator<Element> result = content.listIterator();
    
            while(result.hasNext()) {
                
                Element get = result.next();
                String para = get.text();
                System.out.println(para);
        
            }  
            }
}

就是很简单的应用了一些jsoup的基本功能,抽取结果是这样的:

规模经济是指由于生产专业化水平的提高等原因使企业的单位成本下降从而形成企业的长期平均成本随着产量的增加而递减的经济MBACEO必读12篇及EMBA等商管教育均对规模经济这一概念及其现实意义有所介绍

就是完全没有标点符号的,所以想问下各位怎么才能抽取的有标点符号呢?我看本来在元素里面的内容是有标点的啊。。。

举报
handyjuejue
发帖于4年前 5回/2K+阅
共有5个答案 最后回答: 4年前

对不起,我刚才又仔细检查了下源html,确实不是jsoup的问题,而是我爬取下来的百度百科页面的问题,我是在centos下,用httpclient爬取的页面,可是为什么我爬取下来的页面,都没有逗号,句号什么的,我查看了源码,他们都被一个个的连接替代。比如其中一段

联通充值卡<img class="pchar" style="margin-bottom:-3px" src="/wikiui/api/p?c=540559714740705577652849543" /><img class="pchar" style="margin-bottom:-3px" src="/wikiui/api/p?c=327226498813097597389946285" />电信充值卡<img class="pchar" style="margin-bottom:-3px" src="/wikiui/api/p?c=540559714740705577652849543" /><img class="pchar" style="margin-bottom:-3px" src="/wikiui/api/p?c=327226498813097597389946285" /><img class="pchar" style="margin-bottom:-3px" src="/wikiui/api/p?c=412384692195414326860672491" />

联通充值卡和电信充值卡之间应该是某个标点符号,可是却成了链接。。。这是怎么回事儿呢?着急,求赐教

--- 共有 1 条评论 ---
NealFeng那有可能是用图片作为标点了吧。。。 4年前 回复

可是我需要标点啊,你觉得这是我程序的问题,还是百度那边就会这样给我处理的问题?不知道您有没有过这种爬取数据的经验,是否接触过这类的问题?

可是每个图片连接里面的代表码并不一样,这样我根本无法判断该把它替换成哪一种标点。。。

顶部