胖虎 发表于 2018-3-15 16:38:06

爬虫 测试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/a/div/p/span

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

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/a/div/h1"));
      page.putField("viewerNumber", page.getHtml().xpath("//*[@id=\"item_data\"]/ul/li/a/div/p/span"));
    }

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

    public static void main(String args[]) {
      Spider.create(new DouyuViewerStat())
                .addPipeline(new ConsolePipeline())
                .run();
    }
}

libingyu135 发表于 2018-4-25 16:43:56

6666

梦想家 发表于 2018-5-5 09:37:43

赞一个

Miss_love 发表于 2018-5-8 14:33:37

:handshake

jingzizx 发表于 2018-5-13 14:23:39

:victory:

jingzizx 发表于 2018-5-13 14:23:47

:lol

jingzizx 发表于 2018-5-13 14:23:55

:victory:
页: [1]
查看完整版本: 爬虫 测试webmagic (一)