2016-02-10 3 views
0

Я пытаюсь разобрать веб-сайты с JSOUP на Android, чтобы извлечь все изображения, хранящиеся в HTML. Проблема, с которой я столкнулся, заключается в том, что некоторые веб-сайты просят вас явно принять использование файлов cookie, прежде чем вы сможете продолжить просмотр. При анализе HTML этих веб-сайтов я получаю только HTML-код окна, который просит вас принять cookie, но поскольку я делаю это из кода, я понятия не имею, как принять cookie или как его обойти.Как использовать программные файлы cookie?

это даже возможно?

Например, сайт http://tweakers.net. Когда я разобрать его со следующим:

 try { 
      //Connect to the website and get the html 
      Document doc = Jsoup.connect(uri).get(); 

      //Get all elements with img tag , 
      Elements img = doc.getElementsByTag("img"); 

      for (Element el : img) { 
       //for each element get the srs url 
       String src = el.absUrl("src"); 
       logger.e("image found: " + src); 
       //getImages(src); 
      } 
     } catch (IOException ex) { 
      System.err.println("There was an error"); 
      logger.e(ex.getMessage()); 
     } 

Единственный выход я получаю это:

image found: http://tweakimg.net/g/cookies/logo-50x50.png 

который является изображение на маленьком окно с предложением принять использование куки

Так мой вопрос: есть ли возможность проанализировать реальный сайт даже с этим файлом cookie и как это сделать? Если возможно, я хотел бы знать, что можно использовать unisersal для применения ко всем возможным веб-сайтам. Потому что, насколько я видел, большинство сообщений о обработке файлов cookie относятся к конкретным веб-сайтам, и они включают создание файла cookie, который запрашивает веб-сайт, но это будет большой проблемой, поскольку разные веб-сайты реализуют свои файлы cookie разными способами.

USE CASE: Этот процесс начинается, когда пользователь просматривает веб-сайт на своем телефоне, а затем нажимает кнопку совместного доступа. Намерение начинает мое приложение, я получаю URL-адрес находящегося на совместном веб-сайте, и я разбираю его с помощью jsoup.

+1

Почему бы не использовать веб-браузер в фоновом режиме? Он может помочь вам использовать файлы cookie –

+0

@ Kilanny hmmm ,, так что открытие веб-представления в фоновом режиме может решить проблему? Я определенно мог бы попробовать это! – CantThinkOfAnything

+1

@ Kilanny, если только взаимодействие OP с сайтом осуществляется через JSoup, как будет открываться браузер? –

ответ

1

Я думаю, что вы решаете проблему, которая была создана только тогда, когда вы защищаете неприкосновенность частной жизни. Сайт (ы), с которым вы подключаетесь, чтобы проинформировать человека и попытаться получить свое согласие.

С другой стороны, я думаю, что эти сайты не хотят, чтобы искатели находили и индексировали свои страницы.

Попробуйте установить User-Agent, который сигнализирует о чем-либо отличном от обычных браузеров. Возможно, это уже возможно. Если это не работает, попробуйте подражать определенному веб-браузеру, например Google, BING или, возможно, отправить те же заголовки, что и curl.

2

Есть lots of answers here, как настроить JSoup на передачу файлов cookie на целевой сайт, как только вы определили (вручную), как должен выглядеть файл cookie.

Cookie to log in with Jsoup? может быть самым простым

Однако, кроме простейших случаев сайт-взаимодействия - и дано вам уже кодирование в Java - вы могли бы рассмотреть исследования Selenium WebDriver. В этом случае вы будете взаимодействовать с сайтом, используя реальный браузер, а не библиотеку HTTP со своим хранилищем файлов cookie, что и построено на основе JSoup.

+0

Я обязательно проверю этот Selenium WebDriver. Мне нужно добавить, что это «принятие использования файлов cookie» для общедоступных веб-сайтов без необходимости входа в систему. Поэтому я не уверен, что именно происходит, когда я принимаю использование файлов cookie. – CantThinkOfAnything

+0

. Сайт может использовать проверки файлов cookie в всевозможные способы, это зависит от сайта. Он может использовать аутентификацию на основе файлов cookie, поэтому, как только вы вошли в систему вручную и увидите созданные файлы cookie, вы можете передать их в JSoup или любую другую библиотеку HTTP. Я просто пытаюсь ответить на ваш оригинальный вопрос. Возможно, вам нужно создать новую или сначала провести эксперименты? –

+0

да, может быть, мне нужно создать новый вопрос .. Спасибо! – CantThinkOfAnything

Смежные вопросы