我们在学习nodejs时,我觉得比较简单的应用还是从爬虫着手去学习。毕竟我们在做项目的时候,没有数据也不方便分析。
我这里应用了egg的框架,不了解egg的可以查看官方文档,这里就不介绍了。
我们先说下CURL请求:
curl 是常用的命令行工具,用来请求 Web 服务器。它的名字就是客户端(client)的 URL 工具的意思。
它的功能非常强大,命令行参数多达几十种。如果熟练的话,完全可以取代 Postman 这一类的图形界面工具。
默认情况下curl时不带任何参数,默认就是用get请求;
curl https://www.example.com
egg的get请求方式:
this.ctx.curl(url, option)
url:当然是请求地址了
option:
method | 请求方法,默认为GET。可以是GET,POST,DELETE或PUT |
data | 要发送的数据。将自动进行字符串化 |
dataType | 字符串-响应数据的类型。可能是text或json |
headers | 请求标头 |
timeout | 请求超时 |
auth | username:password在HTTP基本授权中使用 |
followRedirect | 遵循HTTP 3xx响应作为重定向。默认为false |
gzip | 让您在请求连接时获取res对象,默认为false |
nestedQuerystring | urllib默认使用querystring对不支持嵌套对象的表单数据进行字符串化,通过将此选项设置为true,将使用qs而不是querystring支持嵌套对象 |
如果请求的结果返回的是json数据,则需要指定数据类型
this.ctx.curl('https://www.example.com', {dataType: 'json'})
那么一个完整的get/post请求就是
this.ctx.curl('https://www.example.com', {
method: 'GET/POST',
dataType: 'json',
headers: {
token: 'xxx'
},
data: {
id: 1
}
...
})
值得注意一点就是,我们在请求到的数据是整个网络体,我们真正需要的数据也就是网页体在data中。
掌握curl请求之后就可以抓取数据了,至于抓取到的数据怎么分析,就看你自己了。