我有一个项目,要求我使用JSOUP进行网络抓取。我能够从我想要刮的网站主页上得到数据。但是,当我通过循环进入超链接并访问它而在页面中更深入地抓取时,我会得到以下错误:
java.io.IOException: Input is binary and unsupported
at org.jsoup.UncheckedIOException.<init>(UncheckedIOException.java:11)
at org.jsoup.parser.CharacterReader.<init>(CharacterReader.java:38)
at org.jsoup.parser.CharacterReader.<init>(CharacterReader.java:43)
at org.jsoup.parser.TreeBuilder.initialiseParse(TreeBuilder.java:38)
at org.jsoup.parser.HtmlTreeBuilder.initialiseParse(HtmlTreeBuilder.java:65)
at org.jsoup.parser.TreeBuilder.parse(TreeBuilder.java:46)
at org.jsoup.parser.Parser.parseInput(Parser.java:35)
at org.jsoup.helper.DataUtil.parseInputStream(DataUtil.java:169)
at org.jsoup.helper.HttpConnection$Response.parse(HttpConnection.java:835)
at org.jsoup.helper.HttpConnection.get(HttpConnection.java:285)当我检查网站,有部分网站,其中包含评论二进制数据,我认为它造成了问题。我试过使用以下代码:
Document docs2 = Jsoup.connect("https://www.kiatravels.co.id/group_tour/index?TOUR_ID=1467&ID=15803").ignoreContentType(true).get();但还是没用。
希望一些聪明的代码大师能帮上忙!
发布于 2020-01-12 05:24:28
它看起来像是您导航到“下载行程”链接,它打开一个pdf。在使用Jsoup解析链接之前,您需要检查url响应的内容类型。
Connection.Response res = Jsoup.connect(url).execute();
String contentType = res.contentType();您可能想忽略不属于MIME类型的text/html。
https://stackoverflow.com/questions/59676670
复制相似问题