如何用代码控制浏览器下载知乎大v的粉丝数据?

这个是答应了群友好久的一篇教程。 在之前也有几篇文章是解答公众号订阅用户的相关问题而写的,例如:

全民刷军装背后的AI技术及简单实现

用代码生成Glitch Art风格的抖音字体

解读:如何让机器自动答题?

如何制作《超简单的AI自测题》

欢迎用户在后台留言需解答的问题, mixlab 将会不定期的从中选择提供解决方案。同时 mixlab 微信群已经汇集了机器学习、自然语言处理、前端、后端、产品经理、UI设计师、建筑设计师、高校教师、CEO~相关问题,也会有热心群友解答。

回到本文,群友问:如何在浏览器简便地爬取数据,并下载成 json 格式的文件到本地电脑。本文以下载知乎大v的粉丝数据为例,介绍4个知识点,爬虫相关的 html 获取与解析,模拟鼠标点击,缓存数据至本地,自动下载文件至本地。接下来我们一步步来:

1

选定目标页面

爬取知乎大 v 的粉丝数据,比如拿李开复老师的知乎开刀:

https://www.zhihu.com/people/kaifulee/followers

2

编写爬取函数

浏览器打开后,在 console 面板注入以下代码:

function getFollows(){

var lis=document.querySelectorAll(‘.List-item’);
  var res=JSON.parse(localStorage.getItem(‘followers_zhihu’))||[];
   
  for(var i=0;i<lis.length;i++){
      var li=lis[i];
      var a=li.querySelector(‘.UserLink-link’);
      var url=a.getAttribute(‘href’);
      var name=a.querySelector(‘img’).alt;
      var qmd=li.querySelector(‘.RichText’)?li.querySelector(‘.RichText’).innerText:’’;
      var status=li.querySelector(‘.ContentItem-status’)?li.querySelector(‘.ContentItem-status’).innerText:’’;
      res.push({url,name,qmd,status})
  };
  console.log(res);
  localStorage.setItem(‘followers_zhihu’,JSON.stringify(res));
  document.querySelector(‘.PaginationButton-next’).click();
   
};

3

开始自动获取数据

开启一个定时任务,再输入:

window._t=setInterval(getFollows,1600);

4

保存数据至本地文件

等待爬取完成后,再输入:

window.clearInterval(window._t);

停止定时任务,或者直接刷新下浏览器暴力停止下哈。然后输入:

var ssss=localStorage.getItem(‘followers_zhihu’);

function export_raw(name, data) {

var urlObject = window.URL || window.webkitURL || window;
   
    var export_blob = new Blob([data]);
   
    var save_link = document.createElementNS(“http://www.w3.org/1999/xhtml“, “a”);
   
   
    save_link.href = urlObject.createObjectURL(export_blob);
   
    save_link.download = name;
   
    save_link.click();
     
};

执行下:

export_raw(‘zhihufollows.json’,ssss)

这样李开复老师的粉丝数据就都获取到了,接下来想怎么分析就怎么分析吧~例如,我们可以找出粉丝中的斜杆青年:

"WEB前端工程师/Ui设计师。",

"前端开发/设计爱好者",

"Web 前端 / 像素字体设计师",

"设计师,人工智能编程",

"设计师加前端工程师",

"懂设计的前端小白",

"前端开发&ui设计尸",

"设计师 前端 代码 UI 网页 广告",

"设计师/WEB前端工程师/自媒体人",

"不会前端的设计师不是好产品经理",

"前端攻城狮,略懂一点设计,饮四季茶,写八九行代码,十全大补书中达",

"产品经理/前端开发/交互设计/游戏原画",

"不想编程的伪码农不是好设计师",

"会编程的交互设计师",

"望着设计,想着编程,做着文员",

"交互设计/产品设计/数据可视化/网络开发/前端设计",

"景观设计/平面设计爱好者/前端自学中/猫/伪乐观的悲观主义者",

"不想当设计师的产品经理不是好前端",

"业余家装设计/插画/编程/篮球/电子商务",

"懵懂编程,专注设计",

"前端控/设计控"

ps:本文仅供学习研究技术之用。

关于各种技术问题,在 mixlab 的微信群知识星球都有定期的探讨。本文同时在知乎专栏:《人工智能+设计修炼指南》发表。本公众号定期更新人工智能&设计&科技内容。谈点设计,敲点代码,偶尔创作点人工智能实验产品。

(0)

相关推荐