2010-08-23 37 views
17

Có một trang web mà từ đó tôi muốn truy xuất một chuỗi nhất định. Để làm như vậy, tôi cần phải đăng nhập, nhấp vào một số nút, điền vào một hộp văn bản, bấm vào một nút khác - và sau đó chuỗi xuất hiện.Cách truy cập trang web theo lập trình trong java

Làm cách nào để viết chương trình java tự động làm điều đó? Có thư viện hữu ích nào cho mục đích đó không?

Cảm ơn

+0

Thông thường màn hình công trình nạo chí còn tệ hơn sử dụng API chính thức. Bạn đang cố gắng truy cập trang web nào? –

+0

Tôi không tin rằng trang web này có API chính thức, nhưng tôi cũng sẽ kiểm tra tùy chọn đó. – duduamar

Trả lời

25

Hãy thử HtmlUnit

HtmlUnit là một "GUI-Less trình duyệt cho chương trình Java". Nó mô hình HTML tài liệu và cung cấp API cho phép bạn gọi các trang, điền vào các mẫu , nhấp vào liên kết, v.v ... giống như bạn thực hiện trong trình duyệt "bình thường" của mình.

Ví dụ mã cho hình thức submiting:

@Test 
public void submittingForm() throws Exception { 
    final WebClient webClient = new WebClient(); 

    // Get the first page 
    final HtmlPage page1 = webClient.getPage("http://some_url"); 

    // Get the form that we are dealing with and within that form, 
    // find the submit button and the field that we want to change. 
    final HtmlForm form = page1.getFormByName("myform"); 

    final HtmlSubmitInput button = form.getInputByName("submitbutton"); 
    final HtmlTextInput textField = form.getInputByName("userid"); 

    // Change the value of the text field 
    textField.setValueAttribute("root"); 

    // Now submit the form by clicking the button and get back the second page. 
    final HtmlPage page2 = button.click(); 

    webClient.closeAllWindows(); 
} 

Để biết thêm chi tiết kiểm tra: http://htmlunit.sourceforge.net/gettingStarted.html

+0

Âm thanh này chính xác những gì tôi đang tìm kiếm. Tôi sẽ kiểm tra nó, cảm ơn! – duduamar

+0

Nó cũng khá chậm và thực sự tự do với các thông báo cảnh báo. – SuperJedi224

+0

TUYỆT VỜI! Với cách tiếp cận này, tôi đã có thể tạo một ứng dụng Java truy cập vào trang web của công ty ngân hàng, đăng nhập bằng thông tin đăng nhập của tôi và quản lý để xuất ra bảng điều khiển Java số dư và chuyển động của tài khoản ngân hàng, tất cả điều đó theo cách tự động hoàn toàn ! – user3289695

0

Vâng khi bạn nhấn một nút thường bạn làm một yêu cầu thông qua một phương thức HTTP POST, vì vậy bạn nên sử dụng HttpClient để xử lý yêu cầu và HtmlParser để xử lý các trang phản ứng với chuỗi bạn cần.

1

Hãy nhìn vào các dự án apache HttpClient, hoặc nếu bạn cần phải chạy Javascript trên trang, hãy thử HttpUnit.

2

Cách siêu đơn giản để làm điều này là sử dụng HtmlUnit đây:

http://htmlunit.sourceforge.net/

và những gì bạn muốn làm có thể đơn giản như:

@Test 
public void homePage() throws Exception { 
    final WebClient webClient = new WebClient(); 
    final HtmlPage page = webClient.getPage("http://htmlunit.sourceforge.net"); 
    assertEquals("HtmlUnit - Welcome to HtmlUnit", page.getTitleText()); 
} 
Các vấn đề liên quan