美文网首页
nodejs小爬虫

nodejs小爬虫

作者: 一只大椰子 | 来源:发表于2017-04-01 00:23 被阅读0次

主要参考:
http://www.jianshu.com/p/486ebec4d3a9
https://www.npmjs.com/package/cheerio

这次打算从句子迷网站爬一些美丽的句子。

打算得到的对象结构为:

{
  content: "句子内容",
  author: "作者",
  source: "来源"
}

先分析网站的搜索链接
http://www.juzimi.com/search/node/%E5%A4%B1%E6%81%8B%20type%3Asentence?page=5
这是我搜索“失恋”然后翻到第六页的结果。
于是可以得知搜索url为(其中page从0开始):
http://www.juzimi.com/search/node/${encodedKeyword}%20type%3Asentence?page=${page}

再分析一下html结构,还是挺清晰的


html分析

然后就可以动手写了。
主要使用cheerio来进行操作,它可以用类似JQuery的方式操作html。
encode一下关键字主要是为了处理中文字。
这里用了一个循环来递增page,当get出错说明page已经搜完最后一页,就可以退出了。
最后还用fs来导出,方便导入数据库。

app.get('/search/:keyword', async (req, res, next) => {
  let { keyword } = req.params
  console.log('keyword:' + keyword)
  let encodedKeyword = encodeURIComponent(keyword)
  let sentenceList = []
  let page = 0
  let goingOn = true
  while (goingOn) {
    console.log('page:' + page)
    let response = await request.get(`http://www.juzimi.com/search/node/${encodedKeyword}%20type%3Asentence?page=${page}`).catch((err) => {
      goingOn = false
      console.log('done')
    })
    if (goingOn) {
      let html = response.text
      let $ = cheerio.load(html)
      $('.views-field-phpcode').each(function (index, element) {
        let content = $(element).find('.views-field-phpcode-1').find('a').text()
        let temp = $(element).find('.xqjulistwafo').find('a')
        let author
        let source
        if (temp.length == 2) {
          author = temp.eq(0).text()
          source = temp.eq(1).text()
        } else {
          author = ''
          source = temp.eq(0).text()
        }
        sentenceList.push({
          content,
          author,
          source
        })
      })
      ++page
    }
  }
  fs.writeFileSync(`${keyword}.json`, JSON.stringify(sentenceList))
  res.json(sentenceList)
})

最后成果如下:

结果

相关文章

  • nodejs 小爬虫

    nodejs 基础练习,爬取慕课网的某一个课程的内容http 模块cheerio 解析HTML的DOM结构 安装 ...

  • nodejs小爬虫

    主要参考:http://www.jianshu.com/p/486ebec4d3a9https://www.npm...

  • nodeJS爬虫(完整版)

    nodeJs爬虫

  • nodejs通过钉钉群机器人推送消息

    nodejs 通过钉钉群机器人推送消息 Intro 最近在用 nodejs 写爬虫,之前的 nodejs 爬虫代码...

  • NodeJs + Phantomjs 简易爬虫

    NodeJs + Phantomjs 简易爬虫 爬虫是什么? 引用百度百科的说法是: 如何在NodeJs上搭建爬虫...

  • Nodejs http小爬虫

    var http = require('http'); var cheerio = require('cheeri...

  • Nodejs爬虫

    Node.js批量抓取高清妹子图片:https://cnodejs.org/topic/54bdaac4514ea...

  • NodeJS 爬虫

    技术栈cheerio: 将抓取的html直接转化为jquery对象,可以直接对获取信息进行DOM操作。puppet...

  • nodejs爬虫

    nodejs相关模块 获取网页内容(http\request\superagent等) 筛选网页信息(cheeri...

  • nodejs 爬虫

    爬取的是豆瓣网 本次将会用到两个库:superagent 和cheerio 其中 superagent是用来请求目...

网友评论

      本文标题:nodejs小爬虫

      本文链接:https://www.haomeiwen.com/subject/luvbottx.html