[Java] 解决用Jsoup解析网页过程中由&nbsp造成的乱码问题

昨天晚上在写爬虫的时候,发现Jsoup会在输出utf-8网页的时候把  输出成乱码“?”找了找,发现是编码的问题。那么解决思路就是把这个字符替换掉。但是如何替换,我又想了好多办法,甚至一度想过用正则表达式去解决。还来通过自己思考和查资料,得到了两种方法。

方法1:
把Element转化为字符串,用String.replace替换掉,再通过Jsoup.parse()把处理过的字符串转成Document,再通过Document.text() 得到处理过的内容。

String temp=tp.toString().replace(" ", "") ;
Document d=Jsoup.parse(temp) ;
System.out.println(d.text()) ;

tp是一个Element类的对象

方法2:
把Element内的文字通过Element.toString()输出,再用String.replace替换。我比较推荐这种方法。

String temp=tp.text().replace(Jsoup.parse(" ").text(), "") ;
System.out.println(temp) ;

由于我不知道那个字符转义以后不知道变成什么样子了,事实上我也不需要知道,直接用Jsoup.parse("&nbsp;").text()来获得其转义后的东西,将其替换成“”。有些以其人之道还治其人之身的感觉 <( ̄︶ ̄)>

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要使用jsoup抓取并输出"1994 / 美国 / 犯罪 剧情"这样的信息,首先需要对HTML页面进行解析。以下是详细步骤: 1. **添加jsoup依赖**:确保你的Java项目已经添加了jsoup库的依赖。如果使用Maven,可以在pom.xml文件加入jsoup的相关依赖项。 2. **加载HTML文档**:使用Jsoup的`connect`方法加载目标URL的HTML文档,或者使用`parse`方法从HTML字符串解析文档。 3. **解析DOM元素**:根据HTML的结构,使用Jsoup提供的DOM遍历方法或CSS选择器来查找包含"1994 / 美国 / 犯罪 剧情"信息的特定元素。 4. **提取文本信息**:一旦定位到包含这些信息的元素,可以使用`text()`方法或者`ownText()`方法提取元素的文本内容。 5. **输出结果**:将提取到的信息按照需要的格式输出。 以下是一个简化的示例代码,演示如何使用Jsoup抓取页面的特定信息: ```java import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; public class JsoupExample { public static void main(String[] args) { try { // 连接到网页并获取文档对象 Document doc = Jsoup.connect("http://example.com").get(); // 根据HTML结构选择元素,这里假设信息在一个class为"info"的div内 Element infoDiv = doc.select(".info").first(); // 提取并打印文本信息 String infoText = infoDiv.ownText(); System.out.println(infoText); } catch (Exception e) { e.printStackTrace(); } } } ``` 请注意,上述代码仅为示例,你需要根据实际的HTML页面结构和元素来调整选择器。同时,异常处理也应根据具体情况进行完善。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值