Jsoup解析HTML时,明明获取到html页面信息却无法解析到数据(已解决)

    科技2022-07-20  118

    1.解决方式:

    修改获取html页面时候的 user-agent 参数

    删除掉里面的 Chrome/25.0.1364.160 Safari/537.22这两个即可

    2.原因:

    起因是今天有点不太想学别的了,就打算写写爬虫啥的,放松放松,然后就遇到了这个问题:

    我明明获取到html的页面了,也获取到html所有的信息了,但是jsoup就是解析不到数据

    测试代码长这样:

    @Test public void test() throws IOException { String url = "https://tieba.baidu.com/f?kw=古风&ie=utf-8&tab=good&cid=3"; String html = HttpClientUtil.execute(url, true); System.out.println(html); System.out.println("============"); Document parse = Jsoup.parse(html, url); Elements select = parse.select("a.j_th_tit"); for (Element element : select) { System.out.println(element.attr("abs:href")); } }

    结果是这样的:

    我这次使用的是HttpClient去获取html页面信息,然后使用jsoup去解析。看到能够获取到正确的html页面也就没有往那边去想,而是开始检查我的jsoup代码。

    结果问题就出在Httpclient的代码中

    先看之前的配置信息:

    #请求头配置文件 User-Agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64; zh-CN; rv:1.9.2.15) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36 Accept-Encoding=gzip Accept=text/html Accept-Language=zh-CN,zh

    之前我傻乎乎的就和python爬虫一样直接把谷歌浏览器的用户代理直接写上去了

    然而等我看到Jsoup官方给出的例子,我才后知后觉 在我反复的实验之下发现:

    只要带上这两个参数获取html字符串,就解析不到,不带就能够解析到

    Chrome/25.0.1364.160 Safari/537.22

    然后我对比了这两种获取之后html页面,结果发现,根本没有区别,也不知道是不是我眼睛不太好。

    最让我无法理解的就是这个了,看起来没有任何区别,HTML中的标签信息啥的都是一摸一样的,不一样的可能就是头文件那些细小的差距了,结果一个可以解析一个解析不了,关键是你是字符串呀,吐了,就这样吧。

    Processed: 0.009, SQL: 8