摘要:一前言一直感覺爬蟲是個挺高端的東西大數據時代爬蟲顯得尤為重要。
一、前言
一直感覺爬蟲是個挺高端的東西 大數據時代 爬蟲顯得尤為重要。經過一番探索,終于用node實現了這個功能,還包括對抓取內容的解析
二、正文1、首先搭建一個http服務,這里使用我們熟悉的koa(這個是非必須的 你也可以使用純node去抓 這里主要為了方便交互、看效果或者給非技術人員使用方便)
服務端 index.js 代碼
const Koa = require("koa"); const Router = require("koa-router"); // 路由 const {greenFmt, green, purple} = require("color7log"); // log工具 const app = new Koa(); const router = new Router(); // 默認頁面 router.get("/", async (ctx, next) => { ctx.response.type = "html"; ctx.response.body = fs.createReadStream("./index.html"); }); app.use(router.routes()) app.listen(3000); green("服務已運行,端口:3000")
node index.js啟動服務 即可訪問你的頁面了 當然項目下要有一個 index.html 內容請自己解決
2、核心代碼 使用node http模塊請求一個 html頁面
依賴模塊,請自行安裝
const cheerio = require("cheerio"); const zlib = require("zlib"); const iconv = require("iconv-lite");
var http = require("http") // 引入模塊 var url = "http://kaijiang.500.com/shtml/ssq/03001.shtml" // 獲取頁面源碼,調用方法進行解析及輸出 http.get(url, function(res) { var html = "" var arr = []; var chunks; res.on("data", function(data) { arr.push(data); }) res.on("end", function() { chunks = Buffer.concat(arr); chunks = zlib.unzipSync(chunks) // 因為頁面時gzip 所以要解壓 如果頁面時普通文本 不需要這個 var body = iconv.decode(chunks, "gbk"); // 轉化為可見字符 var cheerio = require("cheerio"), // 一個用法類似jq的庫 node后端使用 很方便的處理各種html模板 $ = cheerio.load(body); // 初始化dom對象 let content = $(".iSelectList a") let params = [] for (let i = 0; i < content.length; i++) { params.push($(content[i]).html()) // 獲取每一期的編碼 方便以后遍歷使用 } let nums = $(".ball_box01 li") for (let i = 0; i < nums.length; i++) { green($(nums[i]).html()) // 這里實現了 抓取彩票的中獎號碼 } // 把各期的編碼 寫入到文件 方便使用 fs.writeFile("./data.txt", params.join(","), function(){ console.log("完成") }); }) }).on("error", function() { console.log("獲取數據出錯!") })
看頁面是不是gzip的方法如下
完整可運行代碼地址 node爬蟲
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/106337.html
摘要:爬蟲介紹二爬蟲的分類通用網絡爬蟲全網爬蟲爬行對象從一些種子擴充到整個,主要為門戶站點搜索引擎和大型服務提供商采集數據。 分分鐘教你用node.js寫個爬蟲 寫在前面 十分感謝大家的點贊和關注。其實,這是我第一次在segmentfault上寫文章。因為我也是前段時間偶然之間才開始了解和學習爬蟲,而且學習node的時間也不是很長。雖然用node做過一些后端的項目,但其實在node和爬蟲方面...
摘要:爬蟲架構架構組成管理器管理待爬取的集合和已爬取的集合,傳送待爬取的給網頁下載器。網頁下載器爬取對應的網頁,存儲成字符串,傳送給網頁解析器。從文檔中獲取所有文字內容正則匹配后記爬蟲基礎知識,至此足夠,接下來,在實戰中學習更高級的知識。 前言 Python非常適合用來開發網頁爬蟲,理由如下:1、抓取網頁本身的接口相比與其他靜態編程語言,如java,c#,c++,python抓取網頁文檔的接...
摘要:未授權的爬蟲抓取程序是危害原創內容生態的一大元兇,因此要保護網站的內容,首先就要考慮如何反爬蟲。反爬蟲的銀彈目前的反抓取機器人檢查手段,最可靠的還是驗證碼技術。機器人協議除此之外,在爬蟲抓取技術領域還有一個白道的手段,叫做協議。 本文首發于我的個人博客,同步發布于SegmentFault專欄,非商業轉載請注明出處,商業轉載請閱讀原文鏈接里的法律聲明。 web是一個開放的平臺,這也奠定了...
摘要:可以通過傳入待刪除數組元素組成的數組進行一次性刪除。如果后臺返回的為表示登錄的已失效,需要重新執行。等所有的異步執行完畢后,再執行回調函數。回調函數的參數是每個函數返回數據組成的數組。 其實在早之前,就做過立馬理財的銷售額統計,只不過是用前端js寫的,需要在首頁的console調試面板里粘貼一段代碼執行,點擊這里。主要是通過定時爬取https://www.lmlc.com/s/web/...
摘要:接著上篇爬蟲抓取豆瓣電影網頁數據上本篇主要描述將上次抓取的數據存入數據庫前提百度或谷歌的安裝教程,安裝本地并成功運行推薦一款數據庫可視化管理工具。 接著上篇 Nodejs爬蟲--抓取豆瓣電影網頁數據(上) 本篇主要描述將上次抓取的數據存入mongodb數據庫 前提:百度或谷歌mongodb的安裝教程,安裝本地并成功運行 推薦一款mongodb數據庫可視化管理工具:Robomongo...
閱讀 3988·2021-11-22 15:31
閱讀 2524·2021-11-18 13:20
閱讀 3109·2021-11-15 11:37
閱讀 7022·2021-09-22 15:59
閱讀 744·2021-09-13 10:27
閱讀 3778·2021-09-09 09:33
閱讀 1443·2019-08-30 15:53
閱讀 2569·2019-08-29 15:37