文章采集api 蚂蜂窝爬虫

优采云 发布时间: 2020-08-24 06:13

  文章采集api 蚂蜂窝爬虫

  Nodejs爬取蚂蜂窝文章的爬虫以及搭建第三方服务器

  如题,本项目用Nodejs实现了对蚂蜂窝网站的爬取,并将数据存储到MongoDB中,再以Express作服务器端,Angularjs作后端实现对数据的托管。

  本项目Github地址:

  本项目线上地址:

  本文介绍其中部份的技术细节。

  获取数据

  打开蚂蜂窝网站,发现文章部分的数据是用Ajax获取的,包括分页也是,所以查看一下实际的恳求路径,为

  所以程序应当向这个php文件发送恳求,用Nodejs的话直接http请求也是没问题的,为了代码好看,我使用request库封装一下。

  1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

  function getArticleList(pageNum) {

request({

url: "http://www.mafengwo.cn/ajax/ajax_article.php?start=" + pageNum,

headers: {

'User-Agent': 'Mozilla/5.0'

}

}, function(error, response, data) {

var res = data.match(/i\\\/\d{7}/g);

for (var i = 0; i < 12; i++) {

articlesUrl[i] = res[i * 3].substr(3, 7);

};

async.each(articlesUrl, getArticle, function(err) {

console.log('err: ' + err);

});

});

}

  每页是12篇文章,每篇文字都是(伪)静态页面,正则提取出其中的文章页Url。

  对每位Url发送恳求,拿到源码。

  1

2

3

4

5

6

7

8

9

10

  function getArticle(urlNumber) {

request({

url: "http://www.mafengwo.cn/i/" + urlNumber + ".html",

headers: {

'User-Agent': 'Mozilla/5.0'

}

}, function(error, response, data) {

//处理数据

});

};

  接下来就是处理数据了。

  这一段代码较长,但是目的是十分明晰的,代码也太清晰。我们须要从这个页面中领到文章的标题,以及文章的内容。(文章作者以及发布时间因为时间关系我并没有处理,不过也在代码以及数据库种预留了位置,这个同理很容易完成。)

  来,我们剖析一下这段代码。

  1

2

3

4

<p>var title, content, creator, created;

/*获取标题*/

title = data.match(/\s*.+\s*/).toString().replace(/\s*/g, "").replace(/$/g, "").replace(/\//g, "|").match(/>.+

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线