百度糯米电影信息采集爬虫开发教程

 

本文主要介绍“百度糯米电影信息采集爬虫”的开发教程,按三个不同类目爬取影片的基本信息,爬取字段包括电影ID、电影名称和上映时间等字段,文章结尾会附上完整的爬虫代码。

 

采集网站URLhttps://dianying.nuomi.com/movie/movielist

 

使用功能点:

· 自定义设置

· initCrawlafterDownloadPageonProcessContentPage 和 afterExtractPage回调函数

 

接下来,给你详细说明“百度糯米电影信息采集爬虫”的开发过程

 

步骤1  创建爬虫

注册并登录神箭手,进入神箭手控制台。

1

点击“新建应用”,选择“爬虫”,点击“下一步”。

2

输入爬虫名称“百度糯米电影信息采集爬虫”,选择“编辑模式”,点击“创建”,神箭手爬虫创建成功。

3

 

步骤2  分析网页&开发爬虫

本文使用Chrome浏览器分析京东商品网页,按“F12”打开浏览器“开发者工具”。

4

在浏览器“开发者工具”中勾选“Preserve log”,按“F5”刷新网页,电影列表数据便会重新加载进来。

5

在浏览器“开发者工具”中选择“AHR”,搜索“getmovielist”,便可找到存放电影列表信息的URL。

6

分析请求该URL返回的JSONP数据,结合“神箭手开发文档”,在神箭手爬虫编辑页开发爬虫代码。

7

如何在神箭手上快速开发爬虫——第六课 如何爬取分类数据【春雨医生健康资讯文章采集】

1、本课完整的爬虫代码可以在神箭手示例代码中查看
2、如何在神箭手上运行代码,请查看文档
3、更详细的爬虫开发教程,请查看文档  


大家好,我是神箭手的游牧老师~

今天继续给大家带来 如何在神箭手上快速开发爬虫 系列教程的第六课:如何爬取分类数据。

对于基础知识还不熟悉的童鞋,请先从第一课开始学起啊:第一课点这里


神箭手为了简化爬虫代码,默认是全站爬虫,会自动从入口页链接中自动发现新的链接,全站爬取。但是在爬取文章或者商品数据的时候,我们可能需要精准采集,比如只爬取某些分类的文章或者某个店铺某个关键字的商品。对于这种情况,有两种处理办法:

1、优化列表页和内容页url正则表达式,使其只匹配需要的url;

2、关闭自动链接发现,手动添加需要的url到待爬队列中。

第一种办法没什么好说的,大家多熟悉熟悉正则表达式即可。本文主要讲解第二种办法。关闭自动链接发现和手动添加新的链接,都是在网页下载完成后的回调函数中处理的。


举个例子,按分类爬取春雨医生的健康资讯文章:



我们首先通过自定义输入(在本系列上一篇文章有具体讲解如何使用自定义输入),传入要爬取的分类的首页url,比如:https://www.chunyuyisheng.com/pc/health_news/?channel_id=21

// 输入要爬取的分类url,可以输入多个 
var channelUrls = ["https://www.chunyuyisheng.com/pc/health_news/?channel_id=21", "https://www.chunyuyisheng.com/pc/health_news/?channel_id=35"];//@input(channelUrls, 要爬取的资讯分类首页url)

然后在爬取前,将这些首页url添加到入口页url列表中:

如何在神箭手上快速开发爬虫——第五课 如何设置自定义输入【58同城二手房采集】

  1. 本课完整的爬虫代码可以在神箭手示例代码中查看
  2. 如何在神箭手上运行代码,请查看文档
  3. 更详细的爬虫开发教程,请查看文档


大家好,我是神箭手的游牧老师~

今天继续给大家带来 如何在神箭手上快速开发爬虫 系列教程的第五课:如何设置爬虫的自定义输入。

从这一课开始,我们要进入进阶学习了,对于基础知识还不熟悉的童鞋,请先从第一课开始学起啊:第一课点这里

在交付爬虫使用的时候,我们通常需要能够让使用者按照自己的需求来爬取,比如只爬某些分类的文章或者只爬某个城市的数据等。那这种变量就不能直接在代码里写死了,而需要有一个界面可以让使用者设置,然后在代码中根据使用者设置的具体值来爬取某些网页。

对于这种使用场景,神箭手提供了最简单灵活的解决方案:自定义输入。开发者只需要通过注释标注某些变量,使用的时候就可以通过神箭手的爬虫设置界面输入变量值,然后在代码中根据具体值来处理了。so easy~

爬虫与诡异的字体-反爬与反反爬的奇技淫巧

本来吧,这节课准备写我自己期待很久的Javascript对抗的,但是发现上节课讲了偏技术的Cookie感觉反响一般,所以还是准备再插几节闲聊猎奇型的反爬技巧,再到最终的Javascript吧,放最后一篇文章写,不然我害怕写完那篇,就写不动了。

好了,同样前几篇文章链接:

爬虫被封IP了怎么办-反爬与反反爬的奇技淫巧

爬虫中的验证码识别-反爬与反反爬的奇技淫巧

爬虫中Cookie的伪造(非登录)-反爬与反反爬的奇技淫巧

从今天这篇文章开始,主要给大家过一些小众的反爬策略以及其中的利弊,所以一般来说都会有一个特定的示例,比如今天的反爬策略就来自反爬界大神之一的去哪儿(当然也是爬虫界的)手机版。

我们先来用chrome的手机模式开一下去哪儿的机票:

看着叫一个干净整洁,完全没毛病。但是!当我们掀开被子看源码的时候 震惊了:

不知道大家能不能看清图,我码字注解一下,显示的价格是560,而源码中的价格则是540!

我们这篇文章就来看看去哪儿手机版是怎么做到的(当然偷偷剧透下,下篇文章咱们主角还是去哪儿)

其实同学们只要智商在线,看到标题就知道,这是用字体实现,我们看右侧的css面板也可以看到,这个dom元素的字体是单独设置的。也就是去哪儿通过修改字体,让4显示成了6。

1.为什么字体可以反爬

感觉从这篇文章开始这个套路快进行不下去了。为什么字体可以反爬? 首先这个迷惑性太大,很多马虎的工程师以为可以了,直接就爬下来,当然就是被老板骂的体无完肤了,对反反爬工程师的精神可以造成1万点伤害。同时呢,去哪儿这个字体是动态生成的字体,也就是说你也不知道下一次刷出来的4到底是几显示出来的。这个道行就比较高了。

2.怎么做好字体反爬?

这种反爬策略用在数字上确实天衣无缝,非常优雅。唯一值得提的就是一点,如何动态生成字体和页面来做好对应关系。其实这是一个工程性的问题,大部分编程语言都含有生成字体的库,如果对网站整体性能比较自信的话,完全可以每次请求都动态生成,当然这样确实会比较慢,比较推荐是通过定时任务,去更新一个字体池。每次有请求过来,从字体池中随机拿一个字体,换一个随机的名字(可以通过url rewrite来实现),并和现在的数字做一次映射,调整页面显示后整体输出,就可以在尽量不影响性能的情况下搞死反反爬。

当然使用字体也是有局限的,其中最大的问题莫过于@font-face的兼容性问题,所以去哪儿只在移动端采用这个反爬策略,可能也有兼容性的考虑吧,相比之下,去哪儿的pc端的反爬写法则丑陋很多。

爬虫中Cookie的伪造(非登录)-反爬与反反爬的奇技淫巧

两篇文章下肚,各位看官感觉如何。避免新同学不知道之前的文章:

爬虫被封IP了怎么办-反爬与反反爬的奇技淫巧

爬虫中的验证码识别-反爬与反反爬的奇技淫巧

前两篇文章算是讲了最常规的两种反爬,本篇文章理论上应该说说登录,因为基本上这三个反爬套路结束之后,其他都是小众了。不过登录这个东西真的没太多可讲的,因为严格来说登录并不是反爬,只是一种保护手段,后面有时间简单说说吧。

今天咱们要聊的这位主角跟登录倒也有点关系。先来简单摘抄一段Cookie的描述:

Cookie,有时也用其复数形式Cookies,指某些网站为了辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据(通常经过加密)。定义于 RFC2109 和 2965 中的都已废弃,最新取代的规范是 RFC6265

那简单来说Cookie就是一个浏览器上的缓存或者叫小数据库也行,在没有LocalStorage之前,我们前端工程师就只能用这破玩意当数据库使。

那现在问题来了,这玩意对反爬到底有什么帮助呢。

好了,我的经典套路又要来了,先假装介绍反爬技巧:

一.为什么Cookie能够做反爬?

这个问题远比前两篇文章里的要难回答,因为IP和验证码都是实打实的原因导致人家是反爬的上上手。但是Cookie则不然,Cookie上的反爬则更多的是纯粹人与人之间的对抗,Cookie由于是存储在客户端上导致其伪造成本极低,那为什么还有那么多的网页采用Cookie来做反爬呢?(当然很多爬虫菜鸟工程师可能都判断不出来是用Cookie在做反爬),是因为目前Javascript混淆的手段也是花样百出,任你是Javascript的高手高手高高手,我也能用恶心的招数(比如把所有代码拆成ASCII码数组,再动态拼合后eval)来怼得你不想吃饭。这也成就了Cookie反爬成为除IP和验证码这两类可见的反爬手段之后最重要的一种补充。当然具体Javascript对抗相关的内容我们下一篇文章再讲。

二.怎么做好Cookie反爬?

首先咱们得知道,常见的Cookie设置方式有两种,一种在后端设置,通过Response的Header传输到前端浏览器中,如下图:

另一种则更加隐蔽,通过前端调用document.cookie来设置,对于反爬效果来说,第二种显然比第一种效果来的好的多,起码能让反反爬工程师少陪老婆一个星期,是不是想起来都觉得很过瘾呢。当然直接调用document.cookie来设置基本是没什么效果的,一定要配合上Javascript的混淆才能熬出一锅反爬的好汤来。至于怎么混淆,我们也留到下一篇文章再讲。

三.写爬虫时发现Cookie很复杂该怎么分析?

我们公司有专门做爬虫的同事一见到复杂的Cookie就想哭,Cookie确实属于反反爬中相当难缠的对手,应该说跟Request中有一个摸不着头脑的参数值可以并驾齐驱。那我们遇到这种Cookie应该如何沉着应对呢?下面我就给大家把解题思路讲一讲,考试必考啊。

首先一定准备好Chrome,老师其他工具用的少,就不展开了。

1. 先删掉Cookie看正不正常的

第一步也是最重要的一步,千万记得先把Cookie都删掉请求一次,如果没问题,万事大吉。这里注意对于Cookie来说一定要把环境处理好,因此测试之前一定记得点开『打开新的隐身窗口』的选项。每次测试完了,打开控制界面,清空Cookie再做下一次测试。