51Testing软件测试论坛

标题: 爬虫 测试webmagic (一) [打印本页]

作者: 胖虎    时间: 2018-3-15 16:38
标题: 爬虫 测试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 如下
  1. public class DouyuViewerStat implements PageProcessor {

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

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

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

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

  15.     @Override
  16.     public Site getSite() {
  17.         return site;
  18.     }

  19.     public static void main(String args[]) {
  20.         Spider.create(new DouyuViewerStat())
  21.                 .addPipeline(new ConsolePipeline())
  22.                 .run();
  23.     }
  24. }
复制代码



作者: libingyu135    时间: 2018-4-25 16:43
6666
作者: 梦想家    时间: 2018-5-5 09:37
赞一个
作者: Miss_love    时间: 2018-5-8 14:33

作者: jingzizx    时间: 2018-5-13 14:23

作者: jingzizx    时间: 2018-5-13 14:23

作者: jingzizx    时间: 2018-5-13 14:23





欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2