簡體   English   中英

使用JSOUP保存會話以解析html Android

[英]save the session using JSOUP to parse html Android

在使用“ 檢查元素 ”后,我需要解析並存儲來自此鏈接中這2個表的數據,網絡會向我顯示表的請求:

  • 請求1獲得最高排名: request1
  • 請求2獲得最底層表格: request2

我做了什么:

  1. 我向鏈接發送獲取請求
  2. 我存儲cookie和用戶代理
  3. 我使用cookie和userAgent向request1發送了另一個請求
  4. 我使用cookie和userAgent向request2發送了另一個請求

即使我嘗試在導航器中打開那兩個請求,它也不起作用,所以如何從那些表中獲取數據並將數據存儲在Java列表中? 這是我做的:

Button Rechercher = (Button) findViewById(R.id.button);

        Rechercher.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (android.os.Build.VERSION.SDK_INT > 9) {
                    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
                    StrictMode.setThreadPolicy(policy);
                    wv2.getSettings().setLoadsImagesAutomatically(true);
                    wv2.getSettings().setJavaScriptEnabled(true);
                    wv2.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
                    wv2.loadUrl(requestCTM);
                    TestHtmlParse parse = new TestHtmlParse();
                    parse.toJava(requestCTM, wv2.getSettings().getUserAgentString());

                }
            }
        });

班級實施

  public class TestHtmlParse {
    private Connection.Response response;

    public ArrayList<String> toJava(String url, String useragent) {
    ArrayList<String> downServers = new ArrayList<>();
        Date date = new Date();
        String URL1 = "http://billetterie.ctm.ma/site/select_voyages_aller?datev=03-06-2016&agen_dep=001&agen_dest=002&nbp=1&dater=03-06-2016&aller=AS&tpay=MA&q=1&_search=false&nd="+date.getTime()+"&rows=30&page=1&sidx=&sord=";

        Document doc = null;
        try {
            if (android.os.Build.VERSION.SDK_INT > 9) {
                StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
                StrictMode.setThreadPolicy(policy);
//first request
                response = Jsoup.connect(url).userAgent(useragent).timeout(10000).method(Connection.Method.GET).execute();
                Map<String, String> cookies = response.cookies();
// second request with cookie
                doc = Jsoup.connect(URL1).userAgent(useragent).timeout(10000).cookies(cookies).get();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

它不會工作。 您要查找的表是通過AJAX異步加載的。 Jsoup不支持AJAX,它只會為您提供未經JavaScript操縱的純HTML。

最好的選擇是使用HtmlUnitSelenium之類的無頭瀏覽器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM