相干教程:
手把手教你写电商爬虫-第三课 实战尚妆网AJAX请求处置惩罚和内容提取
手把手教你写电商爬虫-第五课 京东商品批评爬虫 一起来应付反爬虫
东西请求:教程中主要运用到了 1、神箭手云爬虫 框架 这个是爬虫的基本,2、Chrome浏览器和Chrome的插件XpathHelper 这个用来测试Xpath写的是不是准确
基本学问: 本教程中主要用到了一些基本的js和xpath语法,假如对这两种言语不熟悉,能够提前先进修下,都很简朴。
之前写了一个电商爬虫系列的文章,简朴的给人人展现了一下爬虫从入门到进阶的途径,然则作为一个永久走在时期前沿的科技工作者,我们历来都不能住手。
在已有的效果上,所以带上你的chrome,拿起你的xpathhelper,翻开你的神箭手,让我们再次踏上交战金融数据之旅吧。(上个系列相对难一些,发起假如是初学者,先看这个系列的教程)。
金融数据实在是代价大,维度多,泉源广。我们究竟从那里入手呢?想来想去,就从前一段时间风云变幻的p2p网贷最先吧。
一样,我们教程的一致作风就是先找个软柿子,上来不能用力过猛,逐步造就自身的自信心,等真正仇人来的时刻,才不至于怯场畏惧。
我们先去搜刮一下p2p网站,随意找几个对照一下,选中了这个沪商财产。
看着如许的收益率,心动了有木有,钱包坐不住了有木有,对余额宝投出鄙夷的目光了有木有。
好了,闲话不说,这个系列课程吸收上个系列课程里进度太快的经验,给人人多讲一些基本的学问,这一课就连系这个实例,重点讲讲xpath的编写和用法。
起首,大致来讲,XPath是一个相对简朴的言语,甚至都不肯定能称得上是一个言语,主要用途是用来标记XML的元素途径。由于html也是一种xml,因而一般来讲,在html中抽取某个元素是经由过程XPath来做的。XPath自身和Css有着很大的相似性,一般来讲假如之前对Css有肯定的相识的话,XPath上手照样很简朴的。详细的状况我鄙人面的课程中一边写,一边诠释。
起首先肯定列表页:
http://www.hushangcaifu.com/invest/main.html
http://www.hushangcaifu.com/invest/index2.html
http://www.hushangcaifu.com/invest/index3.html
基本上能够看到列表页除了第一页之外都有规律可寻,不过看到这个效果,一般我们最好字斟句酌一下,看下第一页是不是也能够符合规律呢?
翻开 http://www.hushangcaifu.com/invest/index1.html
果真也是第一页,好了,很圆满,总结成正则表达式:
http://www\\.hushangcaifu\\.com/invest/index\\d+\\.html
再看下详情页:
http://www.hushangcaifu.com/invest/a3939.html
http://www.hushangcaifu.com/invest/a3936.html
哈哈,小菜一碟,直接化解成正则:
http://www\\.hushangcaifu\\.com/invest/a\\d{4}\\.html
好了,末了最主要的就是提取页面元素了。我们翻开详情页:
http://www.hushangcaifu.com/invest/a3870.html
一般来讲,我们在我们想要提取的元素上右击,点击检察元素,获得以下效果:
起首看到yanh1147这个元素有无全部网页唯一的class,id或许其他属性,能够看到,在这个页面中没有,那末我们就往上找,上一级的p标签也没有,我们再往上找,在上一级是一个,终究有class了,让我们祷告这个class是唯一的吧,ctrl+f翻开搜刮框,输入product-content-top-left-top,能够看到,找到了1 of 1,这个代表一共一个,这个是第一个,这就是我们愿望的效果,好了,只用找到这一级既可,我们来组织全部的xpath,一般来讲xpath我们并不会从最顶层的html最先写,由于没有必要,因而我们要运用//,这个示意不知中心有若干的层级。接着我们直接把方才找到的这个div写上去,获得这个表达式:
//div[contains(@class,"product-content-top-left-top")]
关于class属性,我们一般会运用contains如许一个函数,防备一个元素有多个class的状况,别的由于class是一个属性,因而class前面须要加上@代表挑选到该元素的一个属性。
如今我们已挑选到了我们要挑选的元素的父元素的父元素,只需我们继承往下走两层既可。
//div[contains(@class,"product-content-top-left-top")]/p/span
由于我们要挑选元素里的笔墨信息,而不是全部元素,我们须要指定是这个元素的笔墨:
//div[contains(@class,"product-content-top-left-top")]/p/span/text()
好了,如许我们就肯定了我们爬取的乞贷用户的称号,我们翻开xpathhelper考证一下有无写错:
圆满的效果。不过人人有的时刻也须要注重,由于有的网页不代表你在一个内容页测试胜利,在其他内容页也能胜利,最很多测几个页面才是保险的。好了,其他的抽取项就不逐一演示了,直接上末了的代码。
var configs = {
domains: ["www.hushangcaifu.com"],
scanUrls: ["http://www.hushangcaifu.com/invest/index1.html"],
contentUrlRegexes: ["http://www\\.hushangcaifu\\.com/invest/a\\d{4}\\.html"],
helperUrlRegexes: ["http://www\\.hushangcaifu\\.com/invest/index\\d+\\.html"],
fields: [
{
name: "title",
selector: "//div[contains(@class,'product-content-top-left-top')]/h3/text()",
required: true
},
{
name: "user_name",
selector: "//div[contains(@class,'product-content-top-left-top')]/p/span/text()"
},
{
name: "total_money",
selector: "//div[contains(@class,'product-content-top-left-middle')]/div[1]/h4/text()"
},
{
name: "project_time",
selector: "//div[contains(@class,'product-content-top-left-middle')]/div[2]/h4/text()"
},
{
name: "annual_return",
selector: "//div[contains(@class,'product-content-top-left-middle')]/div[3]/h4/text()"
},
{
name: "return_method",
selector: "//div[contains(@class,'product-content-top-left-middle')]/div[4]/h4/text()"
}
]
};
var crawler = new Crawler(configs);
crawler.start();
将代码粘贴到神箭手平台上既可运转。好了,看下运转效果:
对爬虫感兴趣的童鞋能够加qq群议论: 566855261。