#java #парсер
Можно ли каким-нибудь образом спарсить всю страницу так, чтобы все элементы создаваемые/изменяемые javascript'ом были видны после загрузки страницы? И была возможность запускать эти скрипты с параметрами. Объясню, допустим есть на сайте текстовое поле с id="itemname" и кнопка с id="submit". Я к примеру пишу Element field = getElementById("itemname"); Element button =getElementById("submit "); field.setText("Кофта"); button.press(); И он мне выводит javascript генерированный документ. То есть это тоже самое как я например зашёл в интернет магазин, в поле поиск (С id itemname) написал "Кофта" и нажал кнопку (С id submit) Создавать WebView и по координатам кликать мне кажется не правильное решение. Ещё где-то видел библиотеку (Не помню как она называется, вроде начинается на 'S'), но мне кажется - это не то, что нужно мне. Либо авторизация в всплывающем окне то же по такому же принципу без протокола :javascript Если кто-то не понял, например. Я пишу программу на Java, которая будет уведомлять меня в трее Windows что на мой ruSO пришел новый ответ. Новый ответ должен парситься из значка вверху сайта (Если нету пустой, если есть то добавляется новый класс к DOMу значка --не знаю как сделано на этом сайте, все примерно--). Но чтобы узнать есть ли у меня сообщения, программа должна скормить серверу мой логин и пароль через JS, а после, в отрендеренной странице, найти те самые значки.
Ответы
Ответ 1
То, что вы ищете, называется Selenium WebDriver. Ваш пример с "Кофтой" будет выглядеть примерно так: import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; WebDriver driver = new FirefoxDriver(); driver.get("http://www.example.com"); driver.findElement(By.id("itemname")).sendKeys("Кофта"); driver.findElement(By.id("submit")).click();Ответ 2
То что я искал называется Headless browser, то есть браузер без визуализации. Для java есть htmlunit. Ссылка на список "Безглавых браузеров" на enSoОтвет 3
У меня на библиотеке JSOUP все получилось: String url = "https://ru.stackoverflow.com/users/login"; String login = "mylogin@sobaka.gav"; String password = "password"; // Вот и вся авторизация.... Connection conn = Jsoup.connect(url); conn.data("email", login); conn.data("password", password); Document doc = conn.userAgent("Mazilla i t.d.").post(); Elements net_items = doc.getElementsByClass("unread-count"); String mess_and_rep = net_items.text(); System.out.println(mess_and_rep); //Получился результат: +10Ответ 4
Вы можете в WebView скормить javascript после загрузки страницы. К примеру, если хотите заполнить Ваше поле id="itemname": String itemname= "Кофта"; webview.loadUrl("javascript:document.getElementById('itemname').value = '"+itemname+"';"); Аналогично и для всего остального, пишете что необходимо и в webview.loadUrl("javascript:...
Комментариев нет:
Отправить комментарий