jsoup-搜索表单的URL在post()中没有变化

时间:2016-05-27 05:18:01

标签: java web-crawler jsoup

我正在开发一个网络抓取工具。 我需要在表单的输入字段中插入一些值(用于搜索)并以编程方式获取结果。表单有一个post方法,操作值为"/SetReviewFilter#REVIEWS"
但问题是,当我从网站手动搜索时,网站的网址不会改变。
我认为网页是自我发布的 Here the link of the Webpage

我不知道如何实现这个。但我试过这个

private Document getReviewSearchDocument(Document search,String search_url)
    {
//search_url mean the url of that search document I fetched previously
// search means the current document of the webpage

    Element input = search.getElementsByClass("ratings_and_types").first();
        Element link = input.select("div:nth-child(1) > form ").first();
        Document rdocument= null;

        if (link !=null) {
            System.out.println("form found! on: "+link_value);
        } else {
            System.out.println("Form not found");
        }
        Connection connection = Jsoup.connect(search_url + "/SetReviewFilter#REVIEWS").timeout(30 * 1000).ignoreContentType(true).ignoreHttpErrors(true);
        try {
            Connection.Response resp = connection.execute();

            if (resp.statusCode() ==200) {

                rdocument = connection.data("q",this.keywords).userAgent("Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36").execute().parse();
                System.out.println("Success: "+ resp.statusCode());
                System.out.println("document: "+ rdocument.text().toString());
            }
            else{
                System.out.println("no search match");
            }



        } catch (IOException e) {
            e.printStackTrace();
        }




        return rdocument;
    }

如果有任何机构对此有所了解请分享。
谢谢。

1 个答案:

答案 0 :(得分:0)

我尝试了几个替代方案并修改了我的代码以调用 JSOUP POST请求来完成工作。但是由于cookies的问题,我多次失败。我发现,对于这个发布请求它需要将近50个cookie(感谢Chrome控制台)。还有一些我无法填写的cookie,因为这些cookie链接到不同的网站(例如:facebook)。最糟糕的情况是我必须做到这一点请求取决于每个城市的酒店数量。所以有时它可能高达85 000,所以这将是昂贵的过程。( - 5我没有看到即将到来)

我在Java中使用Selenium通过Web Automation重建项目。表单中的搜索变得如此简单。
谢谢!