Jsoup——抖音视频抓取(二)

楔子

之前的统计作品数存在问题,就是只是统计了前20个,超过20个就没统计。

发现问题

Jsoup——抖音视频抓取(二)_第1张图片
问题出现于滚动。针对某一特定滚动3次。发现解决问题的所在
滚动3次的url 分别为

  1. https://www.douyin.com/aweme/v1/aweme/post/?user_id=52616983119&count=21&max_cursor=0&aid=1128
  2. https://www.douyin.com/aweme/v1/aweme/post/?user_id=52616983119&count=21&max_cursor=1516362101000&aid=1128
  3. https://www.douyin.com/aweme/v1/aweme/post/?user_id=52616983119&count=21&max_cursor=1514221896000&aid=1128

上述3个请分析

Jsoup——抖音视频抓取(二)_第2张图片
如上图。has_more =1 表示还有 ,并且请求参数是 max_cursor
的值

Jsoup——抖音视频抓取(二)_第3张图片

/**
     * 获取每个关注者的 作品列表(包括超过20个之后的)
     * 
     * @return
     */
    public List getPserWork() {
        FollPerson[] followings = myCareBean.getFollowings();
        List asList = Arrays.asList(followings);

        //需要滚动的位移
        String max_cursor=DouYinConStant.MAX_CURSOR;
        for (FollPerson follPer : asList) {
            try {
                String url = CarePerson.perHost + follPer.getUid() + CarePerson.fexHost + max_cursor + CarePerson.max_cursor;
                Connection connect = Jsoup.connect(url);
                Document document;

                document = connect.ignoreContentType(true).get();

                String html = document.body().html();
                PserWork parsework = JSON.parseObject(html, PserWork.class);
                List aweme_list = parsework.getAweme_list();

                ///////判断是否还有更多
                boolean has_more =DouYinConStant.HAS_MORE.equals(parsework.getHas_more())?true:false;

                /////////////////////////////////////////////////
                //主页超过 20 个视频的还需要处理
                max_cursor=parsework.getMax_cursor();
                while (has_more) {
                    String url1 = CarePerson.perHost + follPer.getUid() + CarePerson.fexHost + max_cursor + CarePerson.max_cursor;
                    String html2 = Jsoup.connect(url1).ignoreContentType(true).get().body().html();
                    PserWork parsework_more = JSON.parseObject(html2, PserWork.class);
                    aweme_list.addAll(parsework_more.getAweme_list());

                    //判断是否停止 和下次滚动位移
                    has_more=DouYinConStant.HAS_MORE.equals(parsework_more.getHas_more())?true:false;
                    max_cursor=parsework_more.getMax_cursor();
                } 


                //主页超过 20 个视频的处理结束
                /////////////////////////////////////////////////

                follPer.setShDetails(aweme_list);
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        }
        System.out.println("关注的 抖音主 的信息如下");
        System.out.println(JSON.toJSONString(asList));
        return asList;

你可能感兴趣的:(jsoup,java,亚马逊ec2)