[Pholcus爬虫] 实现一个简单的下载文件的动态规则
henrylee2cn 发表于11个月前
[Pholcus爬虫] 实现一个简单的下载文件的动态规则
  • 发表于 11个月前
  • 阅读 273
  • 收藏 1
  • 点赞 2
  • 评论 10

330元/年抢阿里云香港云服务器,节省80%出海成本>>>   

Pholcus爬虫的动态规则使用 .pholcus.html 作为规则文件后缀,默认放在当前目录的 ./pholcus_pkg/spiders 文件夹中。用户可以在配置文件 ./pholcus_pkg/config.ini 中通过修改“spiderdir”字段来修改动态规则目录,下面代码是一个下载本人github主页的动态规则示例:

<Spider>
    <Name>henrylee2cn github profile</Name>
    <Description>(HTML动态规则示例) 文件下载测试 [https://github.com/henrylee2cn]</Description>
    <!-- Pausetime为0,表示使用操作界面设置的暂停时间 -->
    <Pausetime>0</Pausetime>
    <!-- EnableLimit为false,表示默认使用请求数作为操作界面采集上限的控制项 -->
    <EnableLimit>false</EnableLimit>
    <!-- EnableCookie为false,表示不缓存cookie,从而软件将自动更换User-Agent -->
    <EnableCookie>false</EnableCookie>
    <!-- EnableKeyin为false,表示不使用来自操作界面的自定义配置信息 -->
    <EnableKeyin>false</EnableKeyin>
    <!-- NotDefaultField为true,表示不输出文本结果的默认字段如Url、ParentUrl、DownloadTime -->
    <NotDefaultField>true</NotDefaultField>
    <!-- Namespace影响结果输出的路径或者数据库、表单名称 -->
    <Namespace>
        <Script></Script>
    </Namespace>
    <!-- SubNamespace根据结果数据调整结果输出的路径或者数据库、表单名称 -->
    <SubNamespace>
        <Script></Script>
    </SubNamespace>
    <!-- Root为采集规则执行的入口 -->
    <Root>
        <Script param="ctx">
        ctx.JsAddQueue({
            Url: "https://github.com/henrylee2cn",
            Rule: "github"
        });
        </Script>
    </Root>
    <!-- Rule为各个规则分支,可以有多个 -->
    <Rule name="github">
        <ParseFunc>
            <Script param="ctx">
            // 打印日志
            ctx.Log().Debug("henrylee2cn's github URL: %v", ctx.GetUrl());
            // ctx.FileOutput()直接输出文件,可选参数为空时根据url自动判断文件名
            ctx.FileOutput();
            </Script>
        </ParseFunc>
    </Rule>
</Spider>

这里下载Pholcus幽灵蛛爬虫源码。

共有 人打赏支持
henrylee2cn
粉丝 69
博文 34
码字总数 5455
作品 7
评论 (10)
蓝调ぷ
新建的规则可以动态加载到任务列表里面吗?
henrylee2cn

引用来自“蓝调ぷ”的评论

新建的规则可以动态加载到任务列表里面吗?
没有做这个监控规则库变动的功能,因为就目前的框架来讲,意义不大
蓝调ぷ

引用来自“蓝调ぷ”的评论

新建的规则可以动态加载到任务列表里面吗?

引用来自“henrylee2cn”的评论

没有做这个监控规则库变动的功能,因为就目前的框架来讲,意义不大
如果我的爬虫已经在运行了,我想添加新的站点爬虫任务,只能重新启动一个爬虫吗?
henrylee2cn

引用来自“蓝调ぷ”的评论

引用来自“蓝调ぷ”的评论

新建的规则可以动态加载到任务列表里面吗?

引用来自“henrylee2cn”的评论

没有做这个监控规则库变动的功能,因为就目前的框架来讲,意义不大
如果我的爬虫已经在运行了,我想添加新的站点爬虫任务,只能重新启动一个爬虫吗?

回复@蓝调ぷ : 是的,这个不是简单的将新规则加入列表就行,而是涉及到了任务运行的逻辑。现在的操作界面无法满足随时允许添加新任务并允许
蓝调ぷ

引用来自“henrylee2cn”的评论

引用来自“蓝调ぷ”的评论

引用来自“蓝调ぷ”的评论

新建的规则可以动态加载到任务列表里面吗?

引用来自“henrylee2cn”的评论

没有做这个监控规则库变动的功能,因为就目前的框架来讲,意义不大
如果我的爬虫已经在运行了,我想添加新的站点爬虫任务,只能重新启动一个爬虫吗?

回复@蓝调ぷ : 是的,这个不是简单的将新规则加入列表就行,而是涉及到了任务运行的逻辑。现在的操作界面无法满足随时允许添加新任务并允许
明白了,谢谢解答
蓝调ぷ
@henrylee2cn 这个动态规则,有详细些的文档吗?https://github.com/henrylee2cn/pholcus/blob/master/pholcus_pkg/spiders/test.pholcus.html
这里的只有获取整个页面内容的实例,有能够解析html的示例不?
henrylee2cn

引用来自“蓝调ぷ”的评论

@henrylee2cn 这个动态规则,有详细些的文档吗?https://github.com/henrylee2cn/pholcus/blob/master/pholcus_pkg/spiders/test.pholcus.html
这里的只有获取整个页面内容的实例,有能够解析html的示例不?
动态规则的一些函数方法与静态路由是相同的,都是ctx.Xxx
蓝调ぷ

引用来自“蓝调ぷ”的评论

@henrylee2cn 这个动态规则,有详细些的文档吗?https://github.com/henrylee2cn/pholcus/blob/master/pholcus_pkg/spiders/test.pholcus.html
这里的只有获取整个页面内容的实例,有能够解析html的示例不?

引用来自“henrylee2cn”的评论

动态规则的一些函数方法与静态路由是相同的,都是ctx.Xxx
ctx.GetDom()
这个拿到dom的动态规则解析是使用的原生的javascript的汗水解析吗?
henrylee2cn

引用来自“蓝调ぷ”的评论

@henrylee2cn 这个动态规则,有详细些的文档吗?https://github.com/henrylee2cn/pholcus/blob/master/pholcus_pkg/spiders/test.pholcus.html
这里的只有获取整个页面内容的实例,有能够解析html的示例不?

引用来自“henrylee2cn”的评论

动态规则的一些函数方法与静态路由是相同的,都是ctx.Xxx

引用来自“蓝调ぷ”的评论

ctx.GetDom()
这个拿到dom的动态规则解析是使用的原生的javascript的汗水解析吗?
原生js无法直接将内容转为html对象,因为otto这个包还不支持。所以解析起来有些复杂,对js要求高。建议你先使用静态规则写。等我有时间把它加强一下吧。
蓝调ぷ

引用来自“蓝调ぷ”的评论

@henrylee2cn 这个动态规则,有详细些的文档吗?https://github.com/henrylee2cn/pholcus/blob/master/pholcus_pkg/spiders/test.pholcus.html
这里的只有获取整个页面内容的实例,有能够解析html的示例不?

引用来自“henrylee2cn”的评论

动态规则的一些函数方法与静态路由是相同的,都是ctx.Xxx

引用来自“蓝调ぷ”的评论

ctx.GetDom()
这个拿到dom的动态规则解析是使用的原生的javascript的汗水解析吗?

引用来自“henrylee2cn”的评论

原生js无法直接将内容转为html对象,因为otto这个包还不支持。所以解析起来有些复杂,对js要求高。建议你先使用静态规则写。等我有时间把它加强一下吧。
明白了 ,谢谢
×
henrylee2cn
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: