jsoup如何达到下拉列表

时间:2014-02-18 12:56:32

标签: java android json jsoup

大家好,我想从中获取数据 http://sansoyunlari.hurriyet.com.tr/SayisalLoto/SayisalLotoSonuclari.aspx这个地址使用jsoupı可以得到它们但只有最新的结果。网站上有一个下拉列表,其中包含日期,如何到达其他日期?顺便说一句,我将这些代码移动到android这些是现在用netbeans编写的代码。 ı会将一个下拉列表放到我的android程序中,该程序从该地址获取数据以及结果。

这些是我直到现在写的java代码

    public static void main(String[] args) {
        String adres = "http://sansoyunlari.hurriyet.com.tr/SayisalLoto/SayisalLotoSonuclari.aspx";
        ArrayList sayi = new ArrayList<>();
        sayi.add("six");
        sayi.add("five");
        sayi.add("four");
        sayi.add("three");
        sayi.add("two");
        sayi.add("one");
        //Sayısal Loto
        try {
            Document doc = Jsoup.connect(adres).get();

            Elements sonuclar = doc.select("div.hurriyet2010_so_sanstopu_no_bg");

            //1. yi manuel almak gerek ilk yoldan çünkü resut diye kodlanmış
            Elements sonuclar1 = doc.select("span#_ctl0_ContentPlaceHolder1_lblresut"+sayi.get(sayi.size()-1));
            Element numaralar = sonuclar1.first();
            System.out.println(numaralar.text());

            //yol 1 numaraları almak için
            for (int i = sonuclar.size();i>1;i--)
            {
                sonuclar1 = doc.select("span#_ctl0_ContentPlaceHolder1_lblresult"+sayi.get(i-2));
                Element numaralar1 = sonuclar1.first();
                System.out.println(numaralar1.text());
            }

            //yol 2 numaraları almak için
            // for(Element el : sonuclar)
            // {
            // System.out.println(el.text());
            // }

            //kazanan kişi sayısı ve ikramiye tutarı için
            for(int i = 0;i<4;i++)
            {
                int b = 6 -i;
                System.out.println(b + " bilen kişi sayısı :");
                sonuclar = doc.select("span#_ctl0_ContentPlaceHolder1_lblluckycount"+sayi.get(i));
                Element el = sonuclar.first();
                System.out.println(el.text());

                System.out.println("Kişi başına düşen ikramiye :");
                sonuclar = doc.select("span#_ctl0_ContentPlaceHolder1_lblluckyamount"+sayi.get(i));
                el = sonuclar.first();
                System.out.println(el.text());

            }

         }
         catch(Exception e){

         }
    }

2 个答案:

答案 0 :(得分:0)

要获取您应该执行的选择项目:

Element select = doc.select("#_ctl0_ContentPlaceHolder1_ddlSayisalLotoDates").first();

现在,这些元素的子元素是您想要的“选项”项目:

for (Element e : select) {
    String date = e.text();
}

修改

我查看了html源代码。为了获得正确的页面,您需要在URL“http://sansoyunlari.hurriyet.com.tr/SayisalLoto/SayisalLotoSonuclari.aspx”上发布一个帖子请求,并附上以下参数:

  • __ EVENTARGUMENT =
  • __ EVENTTARGET = _ ctl0 $ ContentPlaceHolder1 $ ddlSayisalLotoDates
  • __ EVENTVALIDATION = 您从html页面获得的随机值
  • __ LASTFOCUS =
  • __ VIEWSTATE = 另一个随机值
  • _ctl0:ContentPlaceHolder1:ddlSayisalLotoDates = 您要搜索的日期的ID(即 884 19 Ekim 2013
  • txtSearch = 可以为空

正如您所看到的,刮取ASP.NET网页非常烦人。

答案 1 :(得分:0)

使用像Fiddler(或其他人)这样的应用程序来查找您需要发布的参数(隐藏输入,会话cookie,您选择的输入)。可能你错过了其中一些。

希望它有所帮助。