zoukankan      html  css  js  c++  java
  • 爬虫 测试webmagic (一)

    目标:统计斗鱼(www.douyu.com)人数

    思路:

    1. 目录找到douyu播出的所有游戏 http://www.douyutv.com/directory

    2. 借助 chrome 定位到每个游戏的目录页面,正则表达式为 /directory/game/\w+

      比如对于LOL来说,找到 href=/directory/game/LOL

    3. 进入到游戏目录后,借助 chrome 得到 xpath, 定位到各个主播的人数

        比如某个主播的观众数 //*[@id="item_data"]/ul/li[2]/a/div[1]/p/span[1]

        推出人数的位置规律为 //*[@id="item_data"]/ul/li[number]/a/div[1]/p/span[1]

    4. code 如下

    public class DouyuViewerStat implements PageProcessor {

    private Site site = Site.me().setDomain("http://www.douyutv.com/")
    .addStartUrl("http://www.douyutv.com/directory");

    @Override
    public void process(Page page) {
    // System.out.println(page);
    List<String> links = page.getHtml().links().regex("/directory/game/\w+").all();

    for(String link: links) {
    page.addTargetRequest("http://www.douyutv.com"+link);
    }

    // System.out.println(links);
    page.putField("userName", page.getHtml().xpath("//*[@id="item_data"]/ul/li[1]/a/div[1]/h1"));
    page.putField("viewerNumber", page.getHtml().xpath("//*[@id="item_data"]/ul/li[1]/a/div[1]/p/span[1]"));
    }

    @Override
    public Site getSite() {
    return site;
    }

    public static void main(String args[]) {
    Spider.create(new DouyuViewerStat())
    .addPipeline(new ConsolePipeline())
    .run();
    }
    }
  • 相关阅读:
    将元素平分成差值最小的两个集合(DP)
    新年趣事之打牌(01背包+唯一路径)
    offer(背包问题、DP)
    整数划分(完全背包)
    饭卡(DP)
    等和的分隔子集(dp)
    LaunchPad(思维)
    The flower(寻找出现m次以上,长度为k的子串)
    Morse code(多模式串匹配)
    平分娃娃(多重背包+二进制枚举)
  • 原文地址:https://www.cnblogs.com/xinsheng/p/4491556.html
Copyright © 2011-2022 走看看