We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
爬虫?不是用 python 写的吗? 谁告诉你非得用 python 写。nodejs也可以啊。不信我给你写一个。
知识点
# nodejs # https 和 http # DOM Query
//先写个简单的。 let cheerio = require("cheerio"), html = "", https = require('https'), list = [], buffer = null, url = "https://www.baidu.com/"; let req = https.request(url, function (res) { res.on("data", function (data) { list.push(data) }) res.on("end", function () { buffer = Buffer.concat(list) html = buffer.toString() console.log(html) // $ = cheerio.load(html) }) }) req.end()
运行结果
是不是太简单了,能干啥啊? 那换个地址,我们抓取一下百度新闻的热点新闻。
let cheerio = require("cheerio"), html = "", http = require('http'), list = [], buffer = null, url = "http://news.baidu.com/"; let req = http.request(url, function (res) { res.on("data", function (data) { list.push(data) }) res.on("end", function () { buffer = Buffer.concat(list) html = buffer.toString() console.log(html) // $ = cheerio.load(html) }) }) req.end()
上述代码输出的结果是整个文本,我们得找到热点新闻那一栏,咋弄? 用正则?太难了不想写。 下面让你们见识一下优雅的程序员是怎么做的。
首先选择一下找到热点新闻的元素列表。 下来我们通过 cheerio 选取对应的子节点,获得热点新闻的信息。
let cheerio = require("cheerio"), html = "", http = require('http'), list = [], buffer = null, url = "http://news.baidu.com/"; let req = http.request(url, function (res) { res.on("data", function (data) { list.push(data) }) res.on("end", function () { buffer = Buffer.concat(list) html = buffer.toString() $ = cheerio.load(html) $('.hotnews a').each((index, item) => { console.log('\n', $(item).text()) }) }) }) req.end()
运行结果 这次我们依赖的是cheerio 。 cheerio其实就是和 jquery一样的dom选择器。就想直接操作dom一样简单,但这个不能模拟用户操作,如 click 动作,类似操作 xml 文档。
jquery
其实文章最开头列举的三个知识点就是这次讲解的主要内容,nodejs 环境下,我们可以通过 https 和 http 包获得页面文本,再通过cheerio获截取得我们需要的信息。这个只是最简单的一个爬虫的应用,我们可能还要模拟用户登录,保存用户cookies 等一些列复杂操作,遇到带有反爬虫链的网站上述过程就不能用了,nodejs 生态中提供了叫phantom的东东,我们就可以用它来模拟,后面我再介绍如何使用phantom模拟用户操作。
The text was updated successfully, but these errors were encountered:
No branches or pull requests
要不要养一条NodeJS爬虫玩玩
爬虫?不是用 python 写的吗?
谁告诉你非得用 python 写。nodejs也可以啊。不信我给你写一个。
实例
第一步
运行结果
是不是太简单了,能干啥啊?
那换个地址,我们抓取一下百度新闻的热点新闻。
第二步
上述代码输出的结果是整个文本,我们得找到热点新闻那一栏,咋弄?
用正则?太难了不想写。
下面让你们见识一下优雅的程序员是怎么做的。
首先选择一下找到热点新闻的元素列表。
下来我们通过 cheerio 选取对应的子节点,获得热点新闻的信息。
第三步
运行结果
这次我们依赖的是cheerio 。 cheerio其实就是和
jquery
一样的dom选择器。就想直接操作dom一样简单,但这个不能模拟用户操作,如 click 动作,类似操作 xml 文档。总结
其实文章最开头列举的三个知识点就是这次讲解的主要内容,nodejs 环境下,我们可以通过 https 和 http 包获得页面文本,再通过cheerio获截取得我们需要的信息。这个只是最简单的一个爬虫的应用,我们可能还要模拟用户登录,保存用户cookies 等一些列复杂操作,遇到带有反爬虫链的网站上述过程就不能用了,nodejs 生态中提供了叫phantom的东东,我们就可以用它来模拟,后面我再介绍如何使用phantom模拟用户操作。
The text was updated successfully, but these errors were encountered: