51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2574|回复: 6
打印 上一主题 下一主题

[讨论] 爬虫 测试webmagic (一)

[复制链接]
  • TA的每日心情
    擦汗
    2022-8-30 09:02
  • 签到天数: 2 天

    连续签到: 2 天

    [LV.1]测试小兵

    跳转到指定楼层
    1#
    发表于 2018-3-15 16:38:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    目标:统计斗鱼(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. }
    复制代码


    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-9-20 13:42 , Processed in 0.082912 second(s), 22 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表