想爬韩国的naver cafe上的内容,要求登录。实现思路如下: 1、模拟登录; 2、登录成功后保存cookie; 3、发送请求中包含cookie信息,进行爬虫内容的抓取。 模拟登录的时候,发现naver的登录进行了加密。 登录地址,要抓取的页面,牛人帮我看看如何模拟登录。
我告诉你怎么登陆吧。。。
不要去做什么自动填表单!登陆只是一次性工作!在外面做了就好!
cookie的部分直接用cookie jar来管理吧, request模块(https://github.com/request/request)就提供了这样的选项:
jar - If true and tough-cookie is installed, remember cookies for future use (or define your custom cookie jar; see examples section)
@alsotang 英雄所见略同,我现在也是通过把cookie中的字符串给保存下来了,然后发送过去的。但是总感觉不是最佳解决方案。
这个不是很困难吧,登录成功后,将服务器响应中的Set-Cookie的值保存到一个变量(不要使用局部变量),然后接下来的请求每次都加上一个请求头Cookie,值就是你前面保存的cookie的值就可以了。
@nodejser naver的登录模拟比较困难
var opton1={ method:"POST", host:"",//服务器主机Ip,填域名也行 port:"",//http服务器的端口一般是80,IEEE默认的 path:"",//登陆信息的提交目的地,我爬教务处的时候是/LoginAction.do,相当于form的action headers:{ "Content-Type":"application/x-www-form-urlencoded", "Content-length":userInfo.length//userInfo是登陆填的信息,userInfo=query.stringify({"name":" ","password":" "}),感觉用JSON.stringify也没问题, name和password这俩个键名因网站而异,就是form里面input的name属性值 } } var request1=http.request(option1); request1.write(userInfo); request1.end(); request1.on("error",functon(e){.......}); request1.on("response",function(respnse){ //这里的话,response就会包含返回的cookie,但是我不知道如果这里有重定向该怎么做 var option2={ method:"GET", host:"", port:"", path:"",//目标页面 headers:{ "cookie":response.headers["set-cookie"].toString()//这个就是cookie,可以用util解析一下response.headers,看看里面到底有什么 } } var request2=http.request(option2); request2.end(); request2.on("error",function(e){......}); request2.on("response",function(response2){ var wr=fs.createWriteStream("./output.txt"); response2.pipe(wr);//这样output.txt里面就是目标页面的html文档了 //也可以监听data事件 //response2.on("data",function(data){}); //response2.on("end",function(){..}) }) }) 这几行代码应该可以拿到目标页面的html文档内容,我自己也有几个地方没搞明白,就是怎么处理重定向问题,还有为什么我的MAC地址被教务处封了1个星期。。。。。,我有敲代码去注销登陆啊。有同等经历的同学还请搭救一下 ><
CNode 社区为国内最专业的 Node.js 开源技术社区,致力于 Node.js 的技术研究。
我告诉你怎么登陆吧。。。
不要去做什么自动填表单!登陆只是一次性工作!在外面做了就好!
cookie的部分直接用cookie jar来管理吧, request模块(https://github.com/request/request)就提供了这样的选项:
@alsotang 英雄所见略同,我现在也是通过把cookie中的字符串给保存下来了,然后发送过去的。但是总感觉不是最佳解决方案。
这个不是很困难吧,登录成功后,将服务器响应中的Set-Cookie的值保存到一个变量(不要使用局部变量),然后接下来的请求每次都加上一个请求头Cookie,值就是你前面保存的cookie的值就可以了。
@nodejser naver的登录模拟比较困难