上星期用node做了几个简单的小例子,其中发现了很多问题,但其实是一些注意就能避免的问题,解决问题的思路:遇到错误,命令行打出日志,看看错误信息;查看官方API文档,看看是否调用出错;谷歌搜索问题解决方法。
首先讲下怎样获取百度首页代码,百度首页启用了https,所以用node里的https;1
const https = require('https');
接下来进行请求,获取百度首页的二进制文件数据,然后再转换为utf8;代码如下:
1 | let req = https.request(options, (res) => { |
这里会有一个问题就是options里面的数据是怎样的?1
2
3
4
5
6
7var options = {
hostname: www.baidu.com,
port: 443,
method: 'GET',
path: '/',
headers: headers
}
options里面的结构大概是这样,还有一些参数,这里参考node文档,里面最为特殊的就是headers需要存什么?1
2
3
4
5
6
7
8
9
10
11let headers = {
'Connection': 'keep-alive',
'Cache-Control': 'max-age=0',
'Upgrade-Insecure-Requests': '1',
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',
'Accept': 'text/html,application/xhtml+xml,
application/xml;q=0.9,image/webp,*/*;q=0.8',
'Accept-Language': 'zh-CN,zh;q=0.8,en;q=0.6',
'Cookie': '...'
}
这里的请求头是通过工具fiddler获得的,包括里面的cookie等,其中cookie一定要带上去,不然获取不到的百度首页完整的代码,将百度代码获取下来后就可以将他首页logo下载下来了。