java - Android 使用 JSoup 解析 HTML 转换为 String

标签 java android html jsoup android-parser

我正在尝试使用 Richtext 来显示 html 内容,因此我解析了 url 并尝试获取 <div class="margin-box"></div> 中的所有内容为字符串值。 但我无法解析该网址。 代码如下:

User Soup 解析 url

Document document = Jsoup.parse(news_url);
String news_content = CommonUtil.newsContent(document);

数据采集

    public static String newsContent(Document document){
        Elements elements = document.select("div.margin-box");
        String newsContent = elements.toString();
        return newsContent;
    }

然后我得到调试结果: enter image description here

显示 URL 解析失败。 实际上我想获得如下所示的值:

<div>
<p>
<imgsrc="http://p1.pstatp.com/large/1c67000332373537f0ff" img_width="640" img_height="360" inline="0" alt=“************” onerror="javascript:errorimg.call(this);">
</p>
<p class="pgc-img-caption”>***********</p><p>*************************************</p>
<p><imgsrc="http://p3.pstatp.com/large/1c6e0000841ab42ca326" img_width="640" img_height="425" inline="0" alt=“**********”onerror="javascript:errorimg.call(this);"></p>
<p class="pgc-img-caption”>********************************</p>
<p><img src="http://p1.pstatp.com/large/1c6d00008eebccce3e2f" img_width="550" img_height="375" inline="0" alt=“************” onerror="javascript:errorimg.call(this);"></p>
<p class="pgc-img-caption”>*********</p><p>**************************</p><p>*********************</p><p>*****************</p></div>

我做错了什么?

完整 HTML block enter image description here

div 类中没有元素 enter image description here

最佳答案

首先检查 JSoup 是否可以解析内容很有用:http://try.jsoup.org/~8W0oCmiiYnFL01nUM6HDbQ9wwTA

您正在使用 Jsoup.parse expects html stored in a string 。如果你想使用 parse 来检索 html 源代码,你必须 pass a URL and a timeout :

String url = "http://servertrj.com/news/index/208";
Document doc = Jsoup.parse(new URL(url), 3000);

大多数时候,您会发现使用 get() 语法来提取 html 源代码,请将您的语法与以下简单示例进行比较:

String url = "http://servertrj.com/news/index/208";
String userAgent = "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36";
Document doc = Jsoup.connect(url).userAgent(userAgent).get();
Elements elements = doc.select(".margin-box");
System.out.println(elements.size() + "\n" + elements.toString());

输出:

1
<div class="margin-box"> 
<p style="margin: 0px 0px 15px; padding: 0px; border: 0px; line-height: 30px; font-family: &quot;Microsoft YaHei;, SimSun, Verdana, Arial; color: rgb(0, 0, 0); font-size: 15px;">[... truncated because of spam detection, but same as try.jsoup]</p> 
</div>

关于java - Android 使用 JSoup 解析 HTML 转换为 String,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44982229/

相关文章:

java - 如何让 HttpAsyncClient 异步操作?

java - Java中使用不同属性的多个不同对象按字母顺序排序列表

java - 通过 POST 获取 204 响应代码,其中包含 json 实体

java - 为什么 JVM 显示错误的时区 (UTC+02 :00) Istanbul?

html - 我的文字与我的 div 重叠

android - Activity 不是从状态栏通知开始的

javascript - 选择的插件似乎不适用于移动浏览器

android - 调整大小的 GridView 问题

html - 为什么我的页脚不继承容器的宽度?

html - css 中的背景图像并赋予它视差