搜索
您的当前位置:首页正文

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

来源:二三娱乐

注:

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

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

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

我们来举个简单的栗子:

比如爬取58同城的二手房信息,使用者提出需求:我要自定义爬哪些城市的二手房。

第一步:

首先需要将城市作为自定义输入的变量,在神箭手上代码是这样写的:

var cities = ["北京"];//@tags(cities,58上的城市名,分别爬取这些城市的二手房信息)

通过注释来标注cities变量为自定义输入项,基本格式是:

var 变量名 = 变量的值;//@输入方式(变量名, 变量描述方便使用者理解)

这样标注后的变量会自动在神箭手的爬虫设置中显示:


输入方式包括以下类型,神箭手会自动根据输入方式在爬虫设置中显示相应的输入控件:

1、input:其中包括string、int、bool、数组

2、tags:string数组,常用于关键字或者简短文字的输入

3、select:string,用于下拉选择框

4、password:string,用于输入密码

这里只是简单介绍了如何使用自定义输入,神箭手还支持更复杂的自定义形式,包括多个输入项、设置哪些输入项为必填项、不同输入项之间的关联等

第二步:

拿到参数的值(城市名)之后,代码中需要根据这些名字获取不同城市要爬取的入口页url,我们在initCrawl函数中进行操作:


我们首先访问58的城市列表网页,然后根据输入的城市名查到每个城市的58首页链接,然后就可以拼出每个城市的二手房首页url了。

这里我们多做了一步,如果不输入具体的城市,咱们就爬所有城市的!

然后就是根据列表页发现内容页url,然后从内容页中抽取数据的代码了,具体过程不是本课的重点,完整代码大家可以查看本文开头的链接。

第三步:

大家可以把代码拷贝到神箭手的爬虫应用中,然后点击爬虫设置,输入一个城市名;点击爬虫总览页,点击启动,等爬虫初始化完成,爬取结果就源源不断的出现啦:


是不是很简单!!!

最后说两句:

Top