Очистка данных с веб-страницы с использованием 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.

Другие вопросы по тегам