Jsoup解析返回格式错误的html

时间:2017-09-24 15:13:19

标签: java scala web-crawler jsoup html-parsing

所以我正在使用Jsoup并且它适用于99%(100x不同页面中)的时间,然后有一些网站无法正常工作(不清楚原因)

我的代码(scala)

  val con = Jsoup.connect(url)

  val userAgent = StatefulRecoverJsoupBrowser.randomUserAgent()
  con.headers(StatefulRecoverJsoupBrowser.headers(userAgent).asJava)
  con.userAgent(userAgent)
  con.followRedirects(true)
  con.validateTLSCertificates(true)
  con.ignoreHttpErrors(true)
  con.ignoreContentType(true)
  con.cookies(lastCookies.asJava)
  con.referrer(referrer)
  proxy.map(_.toProxy).foreach(con.proxy)
  con.timeout(connectionTimeout.toMillis.toInt)

  val r = con.execute()

现在这适用于此页面(示例)https://www.mountfield.sk/elektricky-vertikutator-levita-s-1400-1zst2046

html代码如下所示:

<html>
 <head></head>
 <body>
  �Is�0z�2���ͮ.IOLb'-��&amp;��*��$���"3@"�H��n���4fo�}�wx�\�Ͼ:����a�TfU�d~�s�\� $@�D����23w_"&lt;&lt;��a�p���Ѧ�t }囯�ῂ�Q��|,�
  <suw���m�j����w̗ o�6�]u�\x̗����h[u�pr�lv����<ӭ�tw�݌��3�b�il���^��+
                                                                  bfe������дi��bf}�vd��lq��:̳e�d������ѩӥ�5�a���x܎e� ����ȏ� �t�� ��{���
                                                                                                                                     m��[�v��.5�suq��@d�"xtsuu���lt�<��] r���z<����h�b)�q��ztw����w�l��+8���x��n�_r�j{����3~�q5�x#�ѡ�j>
   x�V�3���LME��E�)F�I�ub���B/�:�uv��,O&lt;���X��e��P�8.5�,9Kõ�5t*:�KE�����U�kg���a��ă���j�(Wk������i���7�+�g�[��Z�~�0M׵�'����K�rUC�R��$3#�r2�r!��䪹|�0,W'0��\��BVR ��̅��Cv�]�s�n�o'k�_7�"ƹ-�&amp;�[d�Lo}c�d���|�&amp;������������&lt;2a��Z8! a��г���Q�%�s������K'��',�)�� ���?�������"K;&gt;wV;�g������hK�T�J���ĥ fwxE���r~���m�a�������v��T�������6�8�5_�z�M�(d�c&gt;�"�w �3TE")��)��Aq/��
                                             �籹7�T�� @2�����I �����m�ɺ�$�^_����׷F�ۺ� \����A�\����׃�=ˠ��7S:���y��wr,�vk�º?����*��c � �t2YضZ�A|�/s~~��
                                                                                                                                                     �4 � �ᦳ���{�Y['����QmoAhR��ɒ]|���8��/(�c���d&amp;}�VURu��
   <i��bm~��#'���úg�(���狂�(8��j���o�>
    ��� �'���;`�o�~�p�%�%6��7_��\��z�h�A�`ۇ�&gt;`�`і�������:Nz, \��u���C�џ�Y���/"�Z J�7S����h=�|�? &lt;�O�ყB
....

现在,如果我在邮递员中使用相同的网址,我会得到一个合适的HTML,而不是这个垃圾。我不确定问题出在哪里。可能的是,即使我尽最大努力隐藏自己,但页面仍然知道我是一个机器人,但我不知道如何。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

这肯定是一个字符编码问题;该页面具有UTF-8编码。

这里有适合我的Java(抱歉,我不是斯卡拉人):

public static void main(String[] args) {
    Document doc;
    try {
        String url = "https://www.mountfield.sk/elektricky-vertikutator-levita-s-1400-1zst2046";
        doc = Jsoup.parse(new URL(url).openStream(), "UTF-8", url);

        System.out.println(doc);

    } catch (IOException e) {
        e.printStackTrace();
    }
}

基本上,您需要找到编码参数并将其设置为UTF-8。