用100行Nodejs代碼寫微博爬蟲

文章爲原創首發地址: https://hooyes.net/p/nodejs-w...

圖片描述

思路

經過關鍵字搜索抓取新浪微博的數據,分析得出新浪微博的搜索地址格式以下:javascript

http://s.weibo.com/weibo/關鍵字

爬蟲代碼文件爲 weibo-spider.js html

假設咱們要查詢的關鍵字爲 哈佛大學 則運行方式爲java

node weibo-spider.js 哈佛大學

執行此命令後,則爬蟲會逐頁抓取。node

僞代碼

將上面的思路用如下用僞代碼表示過程git

// 主程序 
async function Main(keyword) {
    let url = 'http://s.weibo.com/weibo/'+keyword
    let data = await fetchHtml(url);
    Worker(data);
}

// 抓取 url 的程序
function fetchHtml(url) {
}

// Worker 負責解析抓取的HTML並轉化成 JSON
function Worker(data){
}

// 爲了防止過快抓取,模擬一個線程等待

const  Thread = { 
    Sleep : function (d) {  
    return new Promise((a, r) => { 
    setTimeout(() => { 
      a() 
    }, d) 
  }) }
}

// Nodejs 命令行參數
let argvs = process.argv;
let keyword = argvs[2];
Main(keyword);

執行fetchHtml的時候附帶登陸的 Cookie,本文把 Cookie 存在 Cookie.txtgithub

因Cookie包含私人信息本文不提供,請自行獲取,獲取Cookie方法有不少種,例如:登陸後,經過瀏覽器複製 Cookie , 如下碼基於你已拿到了 Cookie 。

真代碼

weibo-spider.js 100行代碼,依賴一個request模塊和自定義xhtml模塊。瀏覽器

完整代碼已放到Hooyes的Github上開源,歡迎Fork或提建議。async

weibo-spider.js

xhtml.jside

相關文章
相關標籤/搜索