日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

cheerio的小案例

發(fā)布時間:2024/1/17 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 cheerio的小案例 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

2019獨角獸企業(yè)重金招聘Python工程師標準>>>

????????這幾天,心血來潮,想學(xué)一下爬蟲,本來想使用,python的scrapy的,但是。。。但是。。。折騰了一天,都沒折騰好環(huán)境,就不折騰了,果斷投奔nodejs的cheerio去。

????? ? cheerio,就是nodeJs服務(wù)端的jquery。對于原生渣渣的我,這個實在是太方便了。立馬找了一個小案例:

var express = require('express'); var cheerio = require('cheerio'); var superagent = require('superagent'); var app = express();app.get('/', function (req, res, next) {superagent.get('https://cnodejs.org/').end(function (err, sres) {if (err) {return next(err);}var $ = cheerio.load(sres.text);var items = [];$('#content .header a').each(function(index, el) {var $element = $(el);items.push({title: $element.text()});});res.send(items);}); });app.listen(3000, function () {console.log('app is listening at port 3000'); });

瀏覽器完美訪問。結(jié)果如下

[{"title": "全部"},{"title": "精華"},{"title": "分享"},{"title": "問答"},{"title": "招聘"} ]

,然后自己去一樣畫葫蘆抓取其他的網(wǎng)站,因為平時下片都是從www.dy2018.com下的,然后就拿其開刀:

var express = require('express'); var cheerio = require('cheerio'); var superagent = require('superagent'); charset(superagent); var app = express();var url = 'http://www.dy2018.com'; app.get('/', function (req, res, next) {superagent.get(url).end(function (err, sres) {if (err) {return next(err);}var $ = cheerio.load(sres.text, {decodeEntities: false});var items = [];var url_prefix = url;$('.co_area2').eq(0).find('li a').each(function(index, el) {var $element = $(el);items.push({title: $element.text(),url: url_prefix + $element.attr('href')});});res.send(items);}); });app.listen(3000, function () {console.log('app is listening at port 3000'); });

也能跑起來,但是,中文亂碼了。因為dy2018的編碼是gb2312,再折騰了一下,才知道在使用superagent的時候,只支持utf-8的,這就導(dǎo)致了悲劇的發(fā)生。解決方案,有很多我采取使用superagent-charset的方案。代碼如下:

var express = require('express'); var cheerio = require('cheerio'); var charset = require('superagent-charset'); var superagent = require('superagent'); charset(superagent); var app = express();var url = 'http://www.dy2018.com'; app.get('/', function (req, res, next) {superagent.get(url).charset('gb2312').end(function (err, sres) {if (err) {return next(err);}var $ = cheerio.load(sres.text, {decodeEntities: false});var items = [];var url_prefix = url;$('.co_area2').eq(0).find('li a').each(function(index, el) {var $element = $(el);items.push({title: $element.text(),url: url_prefix + $element.attr('href')});});res.send(items);}); });app.listen(3000, function () {console.log('app is listening at port 3000'); });

結(jié)果:

[{"title": "2015年賈樟柯導(dǎo)演劇情片《山河故人》BD國語中字","url": "http://www.dy2018.com/i/96180.html"},{"title": "2016年美國6.4分喜劇家庭片《歡鬧父子情/確認》BD中英雙字","url": "http://www.dy2018.com/i/96918.html"},{"title": "2016年美國7.6分喜劇運動片《飛鷹艾迪/飛躍奇跡》BD中英雙字","url": "http://www.dy2018.com/i/96915.html"},{"title": "2016年美國6分動作犯罪片《白宮淪陷2:倫敦淪陷》HD國語中字","url": "http://www.dy2018.com/i/96914.html"},{"title": "2015年韓國6.1分古裝愛情片《朝鮮魔術(shù)師》BD韓語中字","url": "http://www.dy2018.com/i/96913.html"},{"title": "2016年美國7.5分動作戰(zhàn)爭片《危機13小時》BD中英雙字","url": "http://www.dy2018.com/i/96912.html"},{"title": "2016年鄧超羅志祥喜劇奇幻片《美人魚》BD國粵雙語中字","url": "http://www.dy2018.com/i/96758.html"},{"title": "2016年陳曉秦嵐劇情愛情片《睡在我上鋪的兄弟》HD中英雙字","url": "http://www.dy2018.com/i/96909.html"},{"title": "2016年白敬亭郭姝彤愛情片《誰的青春不迷茫》HD中英雙字","url": "http://www.dy2018.com/i/96907.html"},{"title": "2016年印度恐怖片《亡界之門/鬼門開》BD中英雙字","url": "http://www.dy2018.com/i/96906.html"},{"title": "2016年英國6.6分喜劇動作片《王牌賤諜:格林斯比》BD中英雙字","url": "http://www.dy2018.com/i/96905.html"},{"title": "2016年迪士尼高分冒險動畫片《瘋狂動物城》BD國英雙語雙字","url": "http://www.dy2018.com/i/96878.html"},{"title": "2016年美國6.2分懸疑犯罪片《曼哈頓夜曲》BD中英雙字","url": "http://www.dy2018.com/i/96900.html"},{"title": "2016年張翰趙麗穎喜劇愛情片《女漢子真愛公式》HD中英雙字","url": "http://www.dy2018.com/i/96898.html"},{"title": "2016年英國科幻恐怖片《殺戮指令/殺戮命令》BD中英雙字","url": "http://www.dy2018.com/i/96897.html"} ]

完美,關(guān)鍵代碼是使用superagent-charset,它的github源碼地址https://github.com/magicdawn/superagent-charset

還有一個地方就是var $ = cheerio.load(sres.text, {decodeEntities: false}); cheerio加載的時候,要設(shè)置{decodeEntities: false}。

本文的demo地址:https://git.oschina.net/xbuding/nodejs_cheerio.git

app2.js是抓取電影天堂的demo

轉(zhuǎn)載于:https://my.oschina.net/xbuding/blog/684875

總結(jié)

以上是生活随笔為你收集整理的cheerio的小案例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。