澳门赌场网站主页 > 澳门赌场网站 >

long8龙8国际_www.2017338.com

真正的 IT 男是什么样的?

时间:2017-07-27 20:01 点击:

彩蛋:彩蛋已关闭骚瑞为后来的同学解释一下彩蛋怎么回事,顺便对昨晚12点之后收不到彩蛋的同学抱歉(鞠躬),被屏蔽了
  • 彩蛋是如果赞了这条答案会自动收到一条随机的私信,里面是一则短笑话
  • 笑话是在某网站上爬下来的,一共几十条随机发送
起因是昨天写完原答案,突然想到如果加上彩蛋会不会很多人点赞(说我不是骗赞自己也不信)于是写了个小脚本,跑了起来试了一下第一次高潮出现在回答完30分钟后,突然多了一两百的赞,由于私信发送时间间隔太短,挂掉了修复后坚持到了晚上十二点,本机和VPS都不能再持续发送私信,于是停掉了今早起来发现赞又多了3000,崩溃的我决定还是不接着发了。。。代码和逻辑如下: 代码不全,只有主要的逻辑 用到的库如下: var request = require('superagent'); var cheerio = require('cheerio'); var fs = require('fs'); 首先是这样的一个接口,可以取到某个答案所有赞同的人数 每次取会返回10条数据,是编译好的HTML模版,还有下一组数据的地址 遍历这10条数据并取到所有人的ID即可 config 是Cookie、Host、Referer等配置 var sourceLink = 'https:/answer/' + code + '/voters_profile'; function getVoterList(link, fn) { var next = ''; if (postListLength && !sleepIng) { console.log('waiting'); sleepIng = true; return setTimeout(function () { sleepIng = false; sleep = 1; getVoterList(link, fn); }, 1000 * 60); } request.get(link) .set(config) .end(function (err, res) { if (err || !res.ok) { return console.log(err); } var result = JSON.parse(res.text), voterList = '', $; if (result.paging && result.paging.next) { next = result.paging.next; } if (result.payload && result.payload.length) { voterList = result.payload.join(''); $ = cheerio.load(voterList); $('.zm-rich-follow-btn').each(function () { var id = $(this).attr('data-id'); if (voterIdList.indexOf(id) === -1 && oldIdList.indexOf(id) === -1) { console.log('new id: ', id); voterIdList.push(id); } else { dupIdLen += 1; } }); } if (next && dupIdLen < 20) { setTimeout(function () { getVoterList('https:' + next, fn); }, 3000); } else { dupIdLen = 0; fn(); } }); } 在爬取完该接口后,新的点赞人数会暂存在数组中,遍历该数组,并发送请求 如请求发送成功,将各ID保存在某一个文件中,如发送失败,等几分钟后重试 function sendPost() { var hasError = false; var tempArr = []; postListLength = voterIdList.length; console.log('send post'); if (voterIdList.length) { voterIdList.forEach(function (id, i) { if (hasError) { 处理发送失败的情况,等待5分钟重试 if (!sleepIng) { console.log('waiting'); sleepIng = true; return setTimeout(function () { sleepIng = false; sleep = 1; sendPost(); }, 1000 * 60 * 5); } return console.log('has error'); } var index = (function () { return i; })(i); var postIndex = index > postList.length ? index % postList.length : index; setTimeout(function () { 一波发送完成之前不会启动下一波私信发送 postListLength--; request.post('https:/inbox/post') .send({ member_id: id, content: postList[postIndex], token: '', _xsrf: '' 这里是发送者的Cookie }) .set(config) .set({"Accept": "*/*"}) .set({"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8"}) .end(function (err, res) { console.log('hasError: ', hasError); console.log(new Date()); console.log(res.text); var resObj = {}; try { resObj = JSON.parse(res.text); } catch (e) { console.log(e); if (!sleepIng) { hasError = true; sleep = 5; console.log('waiting'); sleepIng = true; return setTimeout(function () { sleepIng = false; sleep = 1; sendPost(); }, 1000 * 60 * 5); } } if (err || !res.ok || resObj.r !== 0) { console.log(err); hasError = true; sleep = 5; tempArr = voterIdList.slice(0, index); oldIdList = oldIdList.concat(tempArr); fs.writeFile('./idlist.json', oldIdList, function (err) { if (err) console.log(err); }); } }); }, 20 * 1000 * index * sleep); if (index === voterIdList.length - 1) { console.log('last'); oldIdList = oldIdList.concat(voterIdList); voterIdList = []; setTimeout(function () { console.log('run again'); getVoterList(sourceLink, sendPost); }, 1000 * 60 * 15); fs.writeFile('./idlist.json', oldIdList, function (err) { if (err) console.log(err); }); console.log('done '); } }); } else { setTimeout(function () { console.log('run again'); getVoterList(sourceLink, sendPost); }, 1000 * 60); } } 代码花了半个小时写的,比较糙,不过跑了一下确实能用,既然已经不发了就不改了,有同学要求就发上来了PS 知乎的策略应该有变化,昨晚12点之前只要对同一个人两条私信不重复,把握好发送时间间隔就没问题,12点之后我的VPS已经不能用了,时间间隔再久也会返回500错误,1点后我的本机也不行了,不断的返回500和403,Cookie也有更新,索性就停掉了这是昨晚爬到的ID还有我的视角所看的我的私信列表= =就酱==============================某人有一天书荒了,想要看豆瓣上的高分书,然而豆瓣并没有提供按评分的检索,于是拜托我写一个小东西,要求是能按现有标签来分类检索豆瓣图书,并按分数从高到低排序需求不难,就是数据没有,于是写了个爬虫按标签爬下来豆瓣所有的书爬的时候只爬了分类的列表,这样有书籍的名称,链接,评分,分类,够用了,而且一次请求可以拿到较多的数据,并发不高的情况下能较快的爬完豆瓣所有的书爬数据的时间大概两个多小时左右,每次请求间隔3秒,倒是没被屏蔽代码用node写的,包括外网访问的服务器,基本满足了某人的需要,现在跑在我自己的VPS上澳门赌场网站,有域名可以直接访问爬完知道豆瓣热门标签下大概有6万多本书,是会不断更新的,所以还要定期爬一下更新一下数据下面是预览,时间所限页面写的糙了点,反正用户就一个- -