Очистка данных с веб-страницы с использованием Java?
Я создаю Twitter-бота для одного из моих классов, чтобы попрактиковаться в использовании очередей и составить свое резюме.
Я хочу, чтобы бот вычеркнул ручки из твиттера из бюллетеня paper.li, а затем отправил пользователю твит.
Вот пример веб-страницы. http://paper.li/profkane/1335985326
Первоначально я рассуждал о том, чтобы получить ссылку на веб-страницу, а затем получить исходный код страницы, найти его для @twitterhandle, а затем добавить их в очередь для последующего использования при создании сообщений.
Я посмотрел источник страницы, но не могу найти имена твиттеров нигде на веб-странице. Это все еще возможно сделать в Java?
2 ответа
Вам нужно использовать библиотеку, которая поддерживает javascript. Для этого я использую HtmlUnit - отличную библиотеку для репликации поведения браузера!
Смотрите мой модифицированный ответ на этот вопрос ниже для простого примера того, как получить доступ к странице с помощью JavaScript.
Сначала проверьте их веб-страницу ( http://htmlunit.sourceforge.net/), чтобы запустить и запустить htmlunit. Убедитесь, что вы используете последний снимок (2.12 при написании этого)
Попробуйте эти настройки, чтобы игнорировать практически любые препятствия:
WebClient webClient = new WebClient(BrowserVersion.FIREFOX_17);
webClient.getOptions().setRedirectEnabled(true);
webClient.getOptions().setCssEnabled(false);
webClient.getOptions().setThrowExceptionOnScriptError(false);
webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
webClient.getOptions().setUseInsecureSSL(true);
webClient.getOptions().setJavaScriptEnabled(true);
webClient.getCookieManager().setCookiesEnabled(true);
Затем при загрузке вашей страницы, убедитесь, что вы ждете фоновый Javascript, прежде чем делать что-либо со страницей, как ожидание фонового JavaScript.
//Get Page
HtmlPage page1 = webClient.getPage("https://login-url/");
//Wait for background Javascript
webClient.waitForBackgroundJavaScript(10000);
//Get full page _after_ javascript has rendered it fully
System.out.println(page1.asXml());
Я надеюсь, что этот базовый пример поможет вам!
Вы можете использовать HtmlUnit, чтобы делать практически все, что может делать браузер, но программно.
Что касается очистки, вы можете очистить всю страницу и найти идентификатор твиттера (или дескриптор). Когда я проверил образец страницы, я не смог найти дескриптор как таковой, но на значке Twitter есть ссылка на учетную запись пользователя. Вы можете использовать это, чтобы получить ручку. Если вы ищете чистящие библиотеки в Java, вы можете попробовать JSOUP.