jsoup是个好东东,有了它,再也不用从底层开始解析html文档了,而且如果文档是xml或者json的,利用它做转换也是极好极方便的,而且如果你访问的url存在302跳转,他回直接解析跳转后的内容,太强大了,不过在解析html的时候我发现了一个问题,代码如下
Document doc = Jsoup.connect(WEIXIN_GET_MSG_ANALYSE_DATA_URL).data("token",token).data("begin_date",beginDate).data("end_date",endDate).cookies(cookies).ignoreContentType(true)..get();
JSONObject jsonObject = (JSONObject) JSON.parse(doc.body().html());
我发现返回的数据总是不全,大概是1024*1024的长度,我在浏览器直接调用此接口返回的文档是完整的,但是用jsoup确实半截文档,我怀疑jsoup的内部的问题,或来我调试追踪代码,追踪到如下文档,在HttpConnection中
dataStream = conn.getErrorStream() != null ? conn.getErrorStream() : conn.getInputStream();
bodyStream = res.hasHeaderWithValue(CONTENT_ENCODING, "gzip") ?
new BufferedInputStream(new GZIPInputStream(dataStream)) :
new BufferedInputStream(dataStream);
res.byteData = DataUtil.readToByteBuffer(bodyStream, req.maxBodySize());
玄机就在req.maxBodySize();中,我看了一下maxBodySize初始化的代码,原来默认的是1024*1024,so ga,终于找到问题原因了,直接把代码改成如下代码
Document doc = Jsoup.connect(WEIXIN_GET_MSG_ANALYSE_DATA_URL).data("token",token).data("begin_date",beginDate).data("end_date",endDate).cookies(cookies).ignoreContentType(true).maxBodySize(Integer.MAX_VALUE).get();
JSONObject jsonObject = (JSONObject) JSON.parse(doc.body().html());
运行ok,搞定
分享到:
相关推荐
此外,jsoup 还支持 CSS 选择器语法,通过 `select()` 方法,你可以方便地找到文档中符合特定条件的元素。例如,`doc.select("a")` 将选取所有链接元素。 在数据修改方面,jsoup 提供了设置属性值、HTML 内容和文本...
然后,可以通过调用 `title()` 方法获取文档的标题。 #### 四、保证安全性 在处理用户输入的HTML时,必须注意防止跨站脚本(XSS)攻击。Jsoup提供了一种简单有效的方法来清洗用户输入的内容,即使用基于白名单的清理...
在本例中,我们通过Jsoup获取到了京东商品页面的静态HTML代码,但价格信息并未包含在内。通过分析页面源码发现,商品价格是通过JavaScript异步调用接口填充的。通过观察接口的URL结构,我们可以发现,其中包含了商品...
解决方法是使用Jsoup提供的方法,如`Jsoup.parse(String html, String baseUri)`来解析HTML字符串,并通过`Document`对象提供的方法来遍历文档和抽取数据。 #### 从URL加载Document Jsoup支持从URL直接加载一个...
提供的"jsoup中文文档.pdf"是jsoup的官方中文版文档,详细介绍了库的所有功能和使用方法。这是一份宝贵的参考资料,可以帮助开发者快速理解和掌握jsoup的使用。 ### 7. 结论 jsoup是Java开发中处理HTML的强大工具...
网络上的HTML往往不规范,JSoup可以对不标准的HTML进行清理,使其符合W3C标准。这在处理用户输入或者从不受控制的源获取HTML时特别有用,可以确保解析的稳定性。 **类型搜索索引** 在提供的压缩包文件中,"type-...
此外,官方文档和API参考也非常详尽,是学习和解决问题的重要资源。 总的来说,JSoup是一个强大的工具,它简化了HTML处理的过程,无论是用于数据抓取、网页解析还是内容提取,都能大大提高开发效率。通过深入了解和...
确保正确地设置User-Agent是解决Jsoup解析网页内容不一致的关键。除此之外,还要注意其他可能导致问题的因素,如Cookies、HTTP头信息、重定向处理等。在进行网络请求时,尽可能地模仿真实的浏览器行为,有助于获取...
通过这个Document对象,我们可以方便地遍历HTML文档的各个部分,如查找特定的元素,或者获取文档的头部、主体等部分。 例如,你可以使用`select()`方法来选择HTML中的元素,这个方法支持CSS选择器语法,使得定位...
1. **解析HTML文档**:使用`Jsoup.connect()`或`Jsoup.parse()`方法加载HTML文档。 2. **选择器API**:使用CSS选择器选取元素,例如`doc.select("a[href]")`选取所有链接。 3. **提取数据**:通过`.text()`、`.attr...
此外,**jsoup** 还支持元素遍历,可以方便地获取文档中的所有元素或进行其他操作。 #### 五、文档对象模型 **jsoup** 使用一个层次化的文档对象模型(DOM),该模型由多个`Element`对象和`TextNode`对象组成。`...
提供的文件`jsoup-1.7.2_API.CHM`和`jsoup1.6.1全.zip`包含了不同版本的jsoup API文档和库文件。CHM文件是Windows帮助文档格式,可以直接查看API详情。zip文件则包含了完整的源码和库文件,方便进一步学习和开发。 ...
Jsoup包全指的是包含所有必要组件的完整Jsoup集合,以确保能进行完整的网页抓取工作。 Jsoup的核心组件是`jsoup-1.8.1.jar`,这是Jsoup的主要库文件,包含了所有必需的类和方法,使得开发者能够轻松地连接到网站,...
通过以上方法,开发者能轻易获取元素的属性值或文本内容,进行进一步的数据处理。 ##### 五、jsoup的选择器详解 jsoup的选择器语法与CSS选择器相似,支持ID、类名、标签名选择,以及更复杂的组合选择。例如: - `...
3. 清理不规范HTML:网页源代码可能存在不标准的HTML标签和属性,Jsoup会尝试修复这些问题,提供一个干净的、结构化的文档模型。 4. 文档操作:除了查询,Jsoup还允许修改DOM结构,如添加、删除或更新元素和属性。...
4. **类似jQuery的API**:Jsoup提供了类似于jQuery的方法来操作HTML,如`element.html()`用于获取或设置元素的HTML内容,`element.attr("href")`获取链接属性等,这大大简化了网页内容的处理。 5. **数据提取**:...
jsoup的设计目标是处理真实世界中的HTML,它能够处理不规则、不完整的HTML代码,尽可能地恢复原始的结构,为开发者呈现一个干净、结构化的DOM树。 在jsoup 1.6.1版本中,我们可以看到这个库已经相当成熟,提供了...
**jsoup:强大的HTML解析库** ...无论是爬虫项目、数据提取,还是简单的网页内容操作,jsoup都能提供高效且可靠的解决方案。通过jsoup1.8版本,你可以享受到稳定性和性能的优化,进一步提升你的开发效率。
` 获取文档的基本URI。 - 示例:`String resolvedUrl = doc.resolve("relative-url");` 将相对URL转换为绝对URL。 **10. 程序示例:获取所有链接** - 示例代码: ```java Document doc = Jsoup.connect(...
例如,你可以使用`Jsoup.connect()`方法建立HTTP连接,`parse()`方法解析HTML字符串或输入流,然后通过CSS选择器或者DOM遍历来获取你需要的信息。 **辅助工具:jsoup-1.6.1-javadoc.jar** jsoup-1.6.1-javadoc.jar...