03crawler01 爬取直播电视剧列表

来源:互联网 发布:杨子天珠淘宝店 编辑:程序博客网 时间:2024/05/18 15:23

不知道 大家没事的时候, 上不上一些直播平台瞅一愁, 有时候 你去翻列表, 是不是感觉眼睛都要花了, 你完全可以写一个爬虫程序所有的感兴趣的数据下载下来, 然后再自己慢慢的来搜索了呗
一般来说 直播平台是分页的, 你可以将你感兴趣的栏目的所有的直播节目的相关信息下载下来, 然后 寻找自己感兴趣的直播节目

为了 简单, 我们这里只下载一个栏目的一个页面的直播信息
接下来 我们来实现一个功能, 抓取下面的页面的所有的电视剧的电视剧的名字 以及链接 [基于crawler.jar]

浏览器访问画面 :
这里写图片描述

结果截图 :
这里写图片描述
这里写图片描述

图中可能有一些乱码, 但是, 我没有找到原因所在…

代码如下 :

/** * file name : Test11CrawlForDouyu01GameList.java * created at : 9:32:38 PM Sep 5, 2015 * created by 970655147 */package com.hx.crawler;public class Test11CrawlForDouyu03ProductList {    // 测试站点 : http://www.douyutv.com/directory/game/LOL    // 获取游戏房间信息    public static void main(String []args) throws Exception {        String url = "http://www.douyutv.com/directory/game/dy";        Map<String, Object> params = new HashMap<>();        params.put(Tools.TASK, "roomList");        params.put(Tools.SITE, "douyu");        params.put(Tools.PAGE_NO, "0");        ScriptParameter singleUrlTask = Tools.newSingleTask(HtmlCrawler.newInstance(), url, params);        parse(singleUrlTask);    }    // parse 接口    // 1. 获取目录    // 2. 将目录信息传递给下一个脚本    public static void parse(ScriptParameter scriptParameter) throws Exception {        String nextStage = Tools.Test11CrawlForDouyu04ProductInfo;        SingleUrlTask singleUrlTask = (SingleUrlTask) scriptParameter;        Crawler crawler = singleUrlTask.getCrawler();        String url = singleUrlTask.getUrl();        Map<String, Object> param = singleUrlTask.getParam();        String xpath = "{\"name\":\"roomList\",\"xpath\":\"/html/body//li/a[@class='list']\",\"values\":[{\"name\":\"name\",\"attribute\":\"title\"},{\"name\":\"url\",\"attribute\":\"href\"}]}";        xpath = Tools.getRealXPathByXPathObj(xpath);        // ------------------------1------------------------------        StringBuilder sb = new StringBuilder();        long start = System.currentTimeMillis();        Tools.appendCRLF(sb, "URL : " + url, true);        Tools.appendCRLF(sb, "--------------------- [" + Tools.getTaskName(singleUrlTask) + "start ...] --------------------------");        Log.log(sb.toString());        CrawlerConfig config = new CrawlerConfig();        config.setTimeout(30 * 1000);        Page page = crawler.getPage(url, config);        String html = page.getContent();        html = new String(html.getBytes(), "utf-8");//      Log.log(html);//      Tools.save(html, Tools.getTmpPath(7));//      Tools.getPreparedDoc(url, html, Tools.getTmpPath(7));        JSONArray fetchedData = Tools.getResultByXPath(html, url, xpath);        long spent = System.currentTimeMillis() - start;        Tools.appendCRLF(sb, fetchedData.toString(), true);        Tools.appendCRLF(sb, "--------------------- [crawl" + Tools.getTaskName(singleUrlTask) + "end ...] --------------------------");        Tools.appendCRLF(sb, "spent " + spent + " ms ...");        Log.log(sb.toString());        // ------------------------2------------------------------        if(! fetchedData.isEmpty()) {        }    }}

当然这里 只是一个简单的示例, 更多的想法, 大家可以任由自己的思路

注 : 因为作者的水平有限,必然可能出现一些bug, 所以请大家指出!

0 0