Вопрос

Я хочу получить доступ к формам на страницах HTML через язык программирования Java без использования реального браузера между ними.

В настоящее время я делаю это через HTML-ЮНИТ но загрузка страницы занимает немного больше времени.Когда дело доходит до доступа к миллионам страниц, то это дополнительное время имеет наибольшее значение.

Есть ли другие методы для этого?

Это было полезно?

Решение

Я использовал что-то подобное под названием httpunit раньше, но я понятия не имею, как можно сравнить производительность.

Если вам нужно обработать миллионы страниц, я бы рекомендовал добавить еще несколько потоков.Просто предположение, но я думаю, что если вы масштабируете это до нескольких потоков, вы исчерпаете пропускную способность раньше, чем у вас закончится мощность процессора (в этом случае не имеет значения, насколько быстрее это может быть).

Другие советы

Доступ к веб-странице с помощью браузера, даже HtmlUnit, будет медленным.Лучшим методом является протестируйте слой чуть ниже веб-интерфейса, так что вам не нужно получать доступ к миллионам страниц — вместо этого вы тестируете достаточно, чтобы убедиться, что веб-интерфейс правильно использует нижний уровень.

Большая часть взаимодействия в браузере сводится к HTTP GET или HTTP POST.Вам нужно точно определить, какая операция вам нужна, а затем вы сможете создать URL-адрес и/или данные формы. Тогда вы можете использовать что-то вроде этого:

   try { 
    //Construct data 
    String data = URLEncoder.encode("key1", "UTF-8") + "=" + URLEncoder.encode("value1", "UTF-8"); data += "&" + URLEncoder.encode("key2", "UTF-8") + "=" + URLEncoder.encode("value2", "UTF-8"); 
    // Send data 
    URL url = new URL("http://hostname:80/cgi"); 
    URLConnection conn = url.openConnection(); conn.setDoOutput(true); 
    OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream()); 
    wr.write(data); 
    wr.flush(); 

    // Get the response 
    BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream())); 
    String line; while ((line = rd.readLine()) != null) { 

    // Process line... } 
    wr.close(); 
    rd.close(); 
    } catch (Exception e) { } 
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top