zoukankan      html  css  js  c++  java
  • 示例

    先前的示例讲过了如何自动在百度搜索并提取结果. 现在基于上次的脚本添加翻页的功能:

    上次的脚本:

    public void Run()
    {
        Default.Navigate("http://www.baidu.com");
        Default.Ready();
        Default.SelectSingleNode("#kw").Attr("value", "hello world!");
        Default.SelectSingleNode("#su").Click();
        Default.Reset();
        Default.Ready();
        var titles = Default.SelectNodes("h3.t");
        foreach(var t in titles)
        {
            Logger.Log(t.Text());
        }
    }

    首先在页面选定"下一页"元素:

    利用JQuery有多种方法获取这个节点:

    Default.SelectSingleNode("#page a:last");

    或者

    Default.SelectSingleNode("a:contains("下一页")");

    个人觉得第二种方式最可靠, 因为到最后一页时:last是能够匹配到节点的, 而contains("下一页")是匹配不到的, 因此更加能够反映正确情况. 

    现在来改写原有逻辑:

    var titles = Default.SelectNodes("h3.t");
    foreach(var t in titles)
    {
        Logger.Log(t.Text());
    }

    改为一个不停翻页的循环处理:

    while(Default.Available)
    {
        var titles = Default.SelectNodes("h3.t");
        foreach(var t in titles)
        {
            Logger.Log(t.Text());
        }
        var next = Default.SelectSingleNode("a:contains("下一页")");
        if(next.IsEmpty()) return; //如果没有下一页就退出
        next.Click();
        Default.Reset();
        Default.Ready();
    }

    运行起来测试一下... 等... ok, 成功了, 从第一页开始一直翻到最后一页了, 所有搜索结果都正确提取出来了:

    下面是完整的代码:

    public void Run()
    {
        Default.Navigate("http://www.baidu.com");
        Default.Ready();
        Default.SelectSingleNode("#kw").Attr("value", "hello world!");
        Default.SelectSingleNode("#su").Click();
        Default.Reset();
        Default.Ready();
        while(Default.Available)
        {
            var titles = Default.SelectNodes("h3.t");
            foreach(var t in titles)
            {
                Logger.Log(t.Text());
            }
            var next = Default.SelectSingleNode("a:contains("下一页")");
            if(next.IsEmpty()) return; //如果没有下一页就退出
            next.Click();
            Default.Reset();
            Default.Ready();
        }
    }
  • 相关阅读:
    [转载]Python量化交易平台开发教程系列1-类CTP交易API的工作原理
    [转载]Python量化交易平台开发教程系列0-引言
    Wind量化平台使用点评
    掘金量化使用点评
    Tushare使用点评
    量化交易的Python工具链
    可见光通信与室内定位技术
    Qt5下实现摄像头预览及捕获图像方法二(openCV3与Qt5交互使用)
    ubuntu下软件包安装故障解决方案(深入剖析专治疑难)
    Qt5下实现摄像头预览及捕获图像方法一
  • 原文地址:https://www.cnblogs.com/iamzyf/p/3433637.html
Copyright © 2011-2022 走看看