如何在神箭手上快速开发爬虫——第五课 如何设置自定义输入【58同城二手房采集】
来源:互联网 发布:伊利丹7.3知乎 编辑:程序博客网 时间:2024/04/30 04:11
1、本课完整的爬虫代码可以在神箭手示例代码中查看
2、如何在神箭手上运行代码,请查看文档
3、更详细的爬虫开发教程,请查看文档
大家好,我是神箭手的游牧老师~
今天继续给大家带来 如何在神箭手上快速开发爬虫 系列教程的第五课:如何设置爬虫的自定义输入。
从这一课开始,我们要进入进阶学习了,对于基础知识还不熟悉的童鞋,请先从第一课开始学起啊:第一课点这里
在交付爬虫使用的时候,我们通常需要能够让使用者按照自己的需求来爬取,比如只爬某些分类的文章或者只爬某个城市的数据等。那这种变量就不能直接在代码里写死了,而需要有一个界面可以让使用者设置,然后在代码中根据使用者设置的具体值来爬取某些网页。
对于这种使用场景,神箭手提供了最简单灵活的解决方案:自定义输入。开发者只需要通过注释标注某些变量,使用的时候就可以通过神箭手的爬虫设置界面输入变量值,然后在代码中根据具体值来处理了。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函数中进行操作:
/* 在爬取开始前,先根据设置的城市名获取每个城市的入口页链接(也就是二手房列表的第一页)。 并通过addScanUrl添加到入口页待爬队列中*/configs.initCrawl = function (site) { var options = { headers : { "User-Agent" : "Mozilla/6.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/8.0 Mobile/10A5376e Safari/8536.25" } }; var cityContent = site.requestUrl("http://m.58.com/city.html", options); var cs = []; if(cities.length==0){ cs = extractList(cityContent, "//ul[contains(@class,'city_lst') and not(contains(@class,'hot'))]//a/@href"); }else{ for(var index=0;index<cities.length;index++){ var url = extract(cityContent, "//ul[contains(@class,'city_lst') and not(contains(@class,'hot'))]//a[text()[1]='"+cities[index]+"']/@href"); if(!url){ console.log("未在58上发现该城市:"+cities[index]); }else{ cs.push(url); } } } for(var i=0;i<cs.length;i++){ var citypinyin = /m\.58\.com\/(.+?)\//.exec(cs[i]); if(citypinyin){ site.addScanUrl("http://"+citypinyin[1]+".58.com/ershoufang/pn1"); } }};
我们首先访问58的城市列表网页,然后根据输入的城市名查到每个城市的58首页链接,然后就可以拼出每个城市的二手房首页url了。
这里我们多做了一步,如果不输入具体的城市,咱们就爬所有城市的!
然后就是根据列表页发现内容页url,然后从内容页中抽取数据的代码了,具体过程不是本课的重点,完整代码大家可以查看本文开头的链接。
- 第三步:
大家可以把代码拷贝到神箭手的爬虫应用中,然后点击爬虫设置,输入一个城市名;点击爬虫总览页,点击启动,等爬虫初始化完成,爬取结果就源源不断的出现啦:
是不是很简单!!!
最后说两句:
对于在神箭手上开发还不熟悉的童鞋,建议多看看神箭手的开发文档:神箭手开发文档点这里
本课完整代码:完整代码点这里
好啦,咱们下课再见,对爬虫和大数据感兴趣的童鞋可以关注神箭手技术博客 or 神箭手官网
- 如何在神箭手上快速开发爬虫——第五课 如何设置自定义输入【58同城二手房采集】
- 如何在神箭手上快速开发爬虫——第一课 简单的文章爬虫【糗事百科】
- 如何在神箭手上快速开发爬虫——第一课 简单的文章爬虫【糗事百科】
- 如何在神箭手上快速开发爬虫——第二课 如何爬取JS动态生成的数据【豌豆荚游戏排行榜】
- 如何在神箭手上快速开发爬虫——第二课 如何爬取JS动态生成的数据【豌豆荚游戏排行榜】
- 如何在神箭手上快速开发爬虫——第三课 如何爬取列表页数据【87870 VR资讯文章】
- 如何在神箭手上快速开发爬虫——第四课 如何爬取分页数据【蘑菇街商品评论】
- 如何开发凤凰网资讯即时新闻采集爬虫
- 如何使用爬虫采集58招聘信息
- Xcode 如何快速输入自定义代码
- 卖二手房流程及二手房如何定价
- 爬取58同城的二手房信息
- Android开发 如何快速调用系统设置
- 如何使用淘宝商品信息采集爬虫-采集电商商品
- 如何在App中实现朋友圈功能之二快速实现用户信息的自定义——箭扣科技Arrownock
- 如何快速赚钱:Python爬虫
- 如何快速赚钱:Python爬虫
- 如何快速赚钱:Python爬虫
- 读阿里巴巴开发手册总结
- 畸变矫正(反畸变)
- PowerDesigner 怎么将表生成Html Report
- 守护进程c实现
- 分辨率、帧率和码率三者之间的关系
- 如何在神箭手上快速开发爬虫——第五课 如何设置自定义输入【58同城二手房采集】
- Java-ftp支持中文目录、文件名的 上传、删除文件
- 人月神话笔记-外科手术队伍
- BeanFactory子接口ListableBeanFactory
- AI-Android/iOS身份证识别SDK/开发包/API/接口
- ORA-28595 : Invalid DLL Path
- Android 内存优化系列笔记(一)内存抖动
- vi的基本操作
- 多个邮箱,多个手机号的验证