文档章节

如何在神箭手上快速开发爬虫——第三课 如何爬取列表页数据【87870 VR资讯文章】

数据工厂V
 数据工厂V
发布于 2017/07/24 15:42
字数 800
阅读 57
收藏 0

注:

1、本课完整的爬虫代码可以在神箭手示例代码中查看:http://www.shenjianshou.cn/index.php?r=demo/docs&demo_id=500004

2、如何在神箭手上运行代码,请查看文档:http://docs.shenjianshou.cn/overview/guide/develop/crawler.html

3、更详细的爬虫开发教程,请查看文档:http://docs.shenjianshou.cn/develop/summary/summary.html

 

大家好,好久不见了!游牧老师最近一直在忙着开发咱们神箭手的平台功能,近期我们又上线了很多强大的function,还上线了新版更萌萌哒的官网(大家喜欢么( ̄▽ ̄)”)

今天继续给大家讲解新的爬虫开发知识点:如何爬取列表页的数据

看过之前两课的童鞋们应该对神箭手上开发爬虫的基本过程很了解了,数据都是从内容页中使用xpath进行抽取的。那么在实际开发中,我们会遇到数据需要从列表页中抽取的情况,举个栗子:

打开网址:http://hy.87870.com/news/list-0-0-1.html

我们要爬取87870最新资讯里的文章,包括文章标签。我们可以看到文章标签(如上图红圈内的)是在文章列表页中的,那么就需要从列表页中抽取数据啦~

神箭手提供了”内容页附加数据”的方式将列表页数据添加到内容页内容中,从而统一从内容页抽取数据的方式,从而可以轻松爬取到列表页数据:http://docs.shenjianshou.cn/develop/configs/field.html#SourceType-UrlContext

基本过程呢,主要分为两步:

第一步,在onProcessHelperPage回掉函数中,从列表页读取需要的数据,附加给内容页URL

configs.onProcessHelperPage = function(page, content, site){
    var contentList = extractList(content, "//ul[contains(@class,'news-list')]/li");
    if(!contentList){
      return false;
    }
    for(var i=0;i<contentList.length;i++){
      // 1、获取列表页中每篇文章的tags数据
      var tags = extract(contentList[i], "//span[contains(@class,'keyword')]");
      var contentUrl = extract(contentList[i], "//a[contains(@class,'news-tit')]/@href");
      var options = {
        method: "GET",
        contextData: '<div id="sjs-tags">'+tags+'</div>' // 将tags数据添加到options的contextData中
      };
      // 2、将options附加到内容页中,再将内容页链接添加到待爬队列中
      site.addUrl(contentUrl, options);
    }
    // 判断是否有下一页列表页以及将下一页列表页链接添加到待爬队列中
    var nextPage = extract(content, "//a[contains(@class,'next')]/@href");
    if(nextPage){
      site.addUrl(nextPage);
    }
    
    return false; //不让爬虫自动发现新的待爬链接
};

 

第二步,在抽取fields中,添加从UrlContext方式抽取

{
            name: "article_tags",
            alias: "标签",
            // 3、从之前添加到内容页中的附加数据中抽取文章标签
            sourceType: SourceType.UrlContext, // 将抽取的数据来源设置为UrlContext
            selector: "//div[@id='sjs-tags']//a/text()",
            repeated : true
        }

是不是很简单啊?神箭手为开发者们提供了最简单和灵活的调用处理方式!

爬取结果截图:

完整的代码在这里:http://www.shenjianshou.cn/index.php?r=demo/docs&demo_id=500004

 

p.s. 更多爬取列表页数据的例子,请点我查看:http://docs.shenjianshou.cn/develop/advance/useUrlContext.html

再p.s. 如何把爬取的数据发布到自己的系统或者导出到本地文件,看这里:http://docs.shenjianshou.cn/use/publish/summary.html

© 著作权归作者所有

数据工厂V
粉丝 9
博文 24
码字总数 25887
作品 0
杭州
私信 提问
如何在神箭手上快速开发爬虫——第八课 如何爬取手机瀑布流网页数据【手机参考网新闻】

1、本课完整的爬虫代码可以在神箭手示例代码中查看 2、如何在神箭手上运行代码,请查看文档 3、更详细的爬虫开发教程,请查看文档 大家好,我是来自神箭手的游牧老师。一段时间不见,不知道大...

神箭手云爬虫
2018/03/19
0
0
Go 语言开发的爬虫框架 - Grabant

Grabant go语言爬虫框架,自定义javascript规则 Grabant是一个用go语言开发,用javascript语法书写规则的爬虫框架 规则开发和神箭手的爬虫规则类似,开发的目的是兼容大部分神箭手已有的规则...

oserz
2017/10/13
560
0
零基础爬虫学习全记录2:今日头条指定搜索内容下的所有图集图片保存——图片采集小程序

零基础爬虫学习全记录 无论仅仅有多少基础,都不该在徘徊和犹豫中浪费! 只有放弃幻想,用行动促进思考,才能最快找到想要的路。 背景: 没有任何编程基础的金融学专业学生,C语言都没接触过...

无小意丶
2017/10/27
0
0
手把手教你写电商爬虫-第二课 实战尚妆网分页商品采集爬虫

系列教程 手把手教你写电商爬虫-第一课 找个软柿子捏捏 如果没有看过第一课的朋友,请先移步第一课,第一课讲了一些基础性的东西,通过软柿子"切糕王子"这个电商网站好好的练了一次手,相信大...

游牧民族
2016/05/12
192
0
互联网金融爬虫怎么写-第四课 雪球网股票爬虫(单页面多数据)

Previous on 系列教程: 互联网金融爬虫怎么写-第一课 p2p网贷爬虫(XPath入门) 互联网金融爬虫怎么写-第二课 雪球网股票爬虫(正则表达式入门) 互联网金融爬虫怎么写-第三课 雪球网股票...

游牧民族
2016/07/29
295
0

没有更多内容

加载失败,请刷新页面

加载更多

哪些情况下适合使用云服务器?

我们一直在说云服务器价格适中,具备弹性扩展机制,适合部署中小规模的网站或应用。那么云服务器到底适用于哪些情况呢?如果您需要经常原始计算能力,那么使用独立服务器就能满足需求,因为他...

云漫网络Ruan
今天
9
0
Java 中的 String 有没有长度限制

转载: https://juejin.im/post/5d53653f5188257315539f9a String是Java中很重要的一个数据类型,除了基本数据类型以外,String是被使用的最广泛的了,但是,关于String,其实还是有很多东西...

低至一折起
今天
17
0
OpenStack 简介和几种安装方式总结

OpenStack :是一个由NASA和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenSta...

小海bug
昨天
11
0
DDD(五)

1、引言 之前学习了解了DDD中实体这一概念,那么接下来需要了解的就是值对象、唯一标识。值对象,值就是数字1、2、3,字符串“1”,“2”,“3”,值时对象的特征,对象是一个事物的具体描述...

MrYuZixian
昨天
9
0
解决Mac下VSCode打开zsh乱码

1.乱码问题 iTerm2终端使用Zsh,并且配置Zsh主题,该主题主题需要安装字体来支持箭头效果,在iTerm2中设置这个字体,但是VSCode里这个箭头还是显示乱码。 iTerm2展示如下: VSCode展示如下: 2...

HelloDeveloper
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部