如何通过jsoup登录弹出窗口?

时间:2015-11-28 05:03:59

标签: java web-scraping jsoup

我正在开发一个应用程序,我需要通过jsoup中的popup登录。

Here's the page。 打开后查找如果您是Nebraska.gov订阅者,请登录。

我不知道在jsoup中提供什么作为帖子请求。

这是我到目前为止所做的。

String url = "https://www.nebraska.gov/sos/ccorp/";
Connection.Response response = Jsoup
    .connect(url)
    .timeout(30000)
    .method(Connection.Method.POST)
    .userAgent(
        "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:41.0) Gecko/20100101 Firefox/41.0")
    .execute();

    Document document = response.parse(); // search results

1 个答案:

答案 0 :(得分:1)

此网站使用Basic access authentication

您可以通过以下方式发送此类请求:

package com.github.davidepastore.stackoverflow33967883;

import java.io.IOException;

import org.apache.commons.codec.binary.Base64;
import org.jsoup.Connection;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

/**
 * Stackoverflow 33967883 question.
 *
 */
public class App {

    public static void main(String[] args) throws IOException {
        String username = "foo";
        String password = "bar";
        String login = username + ":" + password;
        String base64login = new String(Base64.encodeBase64(login.getBytes()));
        String url = "https://www.nebraska.gov/sos/ccorp/";
        Connection.Response response = Jsoup
                .connect(url)
                .timeout(30000)
                .method(Connection.Method.GET)
                .userAgent(
                        "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:41.0) Gecko/20100101 Firefox/41.0")
                .header("Authorization", "Basic " + base64login)
                .execute();

        Document document = response.parse(); // search results
    }
}

我的pom.xml文件中的依赖项(commons-codecBase64):

<dependency>
    <!-- jsoup HTML parser library @ http://jsoup.org/ -->
    <groupId>org.jsoup</groupId>
    <artifactId>jsoup</artifactId>
    <version>1.8.3</version>
</dependency>
<dependency>
    <groupId>commons-codec</groupId>
    <artifactId>commons-codec</artifactId>
    <version>1.10</version>
</dependency>

您可以找到类似的问题here