国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

node爬蟲 抓取網(wǎng)頁(yè)的實(shí)現(xiàn)

alighters / 3236人閱讀

摘要:一前言一直感覺爬蟲是個(gè)挺高端的東西大數(shù)據(jù)時(shí)代爬蟲顯得尤為重要。

一、前言

一直感覺爬蟲是個(gè)挺高端的東西 大數(shù)據(jù)時(shí)代 爬蟲顯得尤為重要。經(jīng)過(guò)一番探索,終于用node實(shí)現(xiàn)了這個(gè)功能,還包括對(duì)抓取內(nèi)容的解析

二、正文

1、首先搭建一個(gè)http服務(wù),這里使用我們熟悉的koa(這個(gè)是非必須的 你也可以使用純node去抓 這里主要為了方便交互、看效果或者給非技術(shù)人員使用方便)
服務(wù)端 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();

// 默認(rèn)頁(yè)面
router.get("/", async (ctx, next) => {
    ctx.response.type = "html";
    ctx.response.body = fs.createReadStream("./index.html");
});

app.use(router.routes())

app.listen(3000);
green("服務(wù)已運(yùn)行,端口:3000")

node index.js啟動(dòng)服務(wù) 即可訪問(wèn)你的頁(yè)面了 當(dāng)然項(xiàng)目下要有一個(gè) index.html 內(nèi)容請(qǐng)自己解決

2、核心代碼 使用node http模塊請(qǐng)求一個(gè) html頁(yè)面

依賴模塊,請(qǐng)自行安裝

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"

// 獲取頁(yè)面源碼,調(diào)用方法進(jìn)行解析及輸出
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) // 因?yàn)轫?yè)面時(shí)gzip 所以要解壓 如果頁(yè)面時(shí)普通文本 不需要這個(gè)
        var body = iconv.decode(chunks, "gbk");  // 轉(zhuǎn)化為可見字符

        var cheerio = require("cheerio"), // 一個(gè)用法類似jq的庫(kù) node后端使用 很方便的處理各種html模板
        $ = cheerio.load(body); // 初始化dom對(duì)象
        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()) // 這里實(shí)現(xiàn)了 抓取彩票的中獎(jiǎng)號(hào)碼
        }
        
        // 把各期的編碼 寫入到文件 方便使用
        fs.writeFile("./data.txt", params.join(","), function(){
            console.log("完成")
        });
    })
}).on("error", function() {
    console.log("獲取數(shù)據(jù)出錯(cuò)!")
})

看頁(yè)面是不是gzip的方法如下

完整可運(yùn)行代碼地址 node爬蟲

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/106337.html

相關(guān)文章

  • 分分鐘教你用node.js寫個(gè)爬蟲

    摘要:爬蟲介紹二爬蟲的分類通用網(wǎng)絡(luò)爬蟲全網(wǎng)爬蟲爬行對(duì)象從一些種子擴(kuò)充到整個(gè),主要為門戶站點(diǎn)搜索引擎和大型服務(wù)提供商采集數(shù)據(jù)。 分分鐘教你用node.js寫個(gè)爬蟲 寫在前面 十分感謝大家的點(diǎn)贊和關(guān)注。其實(shí),這是我第一次在segmentfault上寫文章。因?yàn)槲乙彩乔岸螘r(shí)間偶然之間才開始了解和學(xué)習(xí)爬蟲,而且學(xué)習(xí)node的時(shí)間也不是很長(zhǎng)。雖然用node做過(guò)一些后端的項(xiàng)目,但其實(shí)在node和爬蟲方面...

    fanux 評(píng)論0 收藏0
  • Python爬蟲基礎(chǔ)

    摘要:爬蟲架構(gòu)架構(gòu)組成管理器管理待爬取的集合和已爬取的集合,傳送待爬取的給網(wǎng)頁(yè)下載器。網(wǎng)頁(yè)下載器爬取對(duì)應(yīng)的網(wǎng)頁(yè),存儲(chǔ)成字符串,傳送給網(wǎng)頁(yè)解析器。從文檔中獲取所有文字內(nèi)容正則匹配后記爬蟲基礎(chǔ)知識(shí),至此足夠,接下來(lái),在實(shí)戰(zhàn)中學(xué)習(xí)更高級(jí)的知識(shí)。 前言 Python非常適合用來(lái)開發(fā)網(wǎng)頁(yè)爬蟲,理由如下:1、抓取網(wǎng)頁(yè)本身的接口相比與其他靜態(tài)編程語(yǔ)言,如java,c#,c++,python抓取網(wǎng)頁(yè)文檔的接...

    bang590 評(píng)論0 收藏0
  • 如果有人問(wèn)你爬蟲抓取技術(shù)門道,請(qǐng)叫他來(lái)看這篇文章

    摘要:未授權(quán)的爬蟲抓取程序是危害原創(chuàng)內(nèi)容生態(tài)的一大元兇,因此要保護(hù)網(wǎng)站的內(nèi)容,首先就要考慮如何反爬蟲。反爬蟲的銀彈目前的反抓取機(jī)器人檢查手段,最可靠的還是驗(yàn)證碼技術(shù)。機(jī)器人協(xié)議除此之外,在爬蟲抓取技術(shù)領(lǐng)域還有一個(gè)白道的手段,叫做協(xié)議。 本文首發(fā)于我的個(gè)人博客,同步發(fā)布于SegmentFault專欄,非商業(yè)轉(zhuǎn)載請(qǐng)注明出處,商業(yè)轉(zhuǎn)載請(qǐng)閱讀原文鏈接里的法律聲明。 web是一個(gè)開放的平臺(tái),這也奠定了...

    raoyi 評(píng)論0 收藏0
  • 手把手教你寫帶登錄NodeJS爬蟲+數(shù)據(jù)展示

    摘要:可以通過(guò)傳入待刪除數(shù)組元素組成的數(shù)組進(jìn)行一次性刪除。如果后臺(tái)返回的為表示登錄的已失效,需要重新執(zhí)行。等所有的異步執(zhí)行完畢后,再執(zhí)行回調(diào)函數(shù)。回調(diào)函數(shù)的參數(shù)是每個(gè)函數(shù)返回?cái)?shù)據(jù)組成的數(shù)組。 其實(shí)在早之前,就做過(guò)立馬理財(cái)?shù)匿N售額統(tǒng)計(jì),只不過(guò)是用前端js寫的,需要在首頁(yè)的console調(diào)試面板里粘貼一段代碼執(zhí)行,點(diǎn)擊這里。主要是通過(guò)定時(shí)爬取https://www.lmlc.com/s/web/...

    cpupro 評(píng)論0 收藏0
  • Nodejs爬蟲--抓取豆瓣電影網(wǎng)頁(yè)數(shù)據(jù)(下)

    摘要:接著上篇爬蟲抓取豆瓣電影網(wǎng)頁(yè)數(shù)據(jù)上本篇主要描述將上次抓取的數(shù)據(jù)存入數(shù)據(jù)庫(kù)前提百度或谷歌的安裝教程,安裝本地并成功運(yùn)行推薦一款數(shù)據(jù)庫(kù)可視化管理工具。 接著上篇 Nodejs爬蟲--抓取豆瓣電影網(wǎng)頁(yè)數(shù)據(jù)(上) 本篇主要描述將上次抓取的數(shù)據(jù)存入mongodb數(shù)據(jù)庫(kù) 前提:百度或谷歌mongodb的安裝教程,安裝本地并成功運(yùn)行 推薦一款mongodb數(shù)據(jù)庫(kù)可視化管理工具:Robomongo...

    legendaryedu 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<