首页 » SEO关键词 » seo爬虫js_运用JavaScript写爬虫

seo爬虫js_运用JavaScript写爬虫

访客 2024-11-12 0

扫一扫用手机浏览

文章目录 [+]

通过实例的办法学习爬虫是最好的方法,先定一个小目标:爬取github repo信息。
入口URL如下,我们只须要一贯点击next按钮就能够遍历到用户的所有repo。

https://github.com/{{username}}?tab=repositories

seo爬虫js_运用JavaScript写爬虫 seo爬虫js_运用JavaScript写爬虫 SEO关键词

获取repo之后,可以做什么?

seo爬虫js_运用JavaScript写爬虫 seo爬虫js_运用JavaScript写爬虫 SEO关键词
(图片来自网络侵删)
统计用户最常利用的措辞,统计用户措辞利用分布情形统计用户所获取的star数,fork数

二、爬虫双股剑:axios和jQuery

axios是JavaScript中很常用的异步网络要求库,比较jQuery,它更轻量、更专业。
既能够用于浏览器端,也可以用于Node。
它的语法风格是promise形式的。
在本任务中,只须要理解如下用法就足够了:

axios.get(url).then((resp) => { 要求成功,处理resp.data中的html数据}).catch((err) => { 要求失落败,缺点处理})

要求之后须要处理回答结果,处理回答结果的库当然是用jQuery。
实际上,我们有更好的选择:cheerio。

在node下,利用jQuery,须要利用jsdom库仿照一个window工具,这种方法效率较低,四个字形容便是:笨重稳妥。

如下代码利用jQuery解析haha.html文件

fs = require(\"大众fs\公众)jquery=require('jquery')jsdom=require('jsdom') //fs.readFileSync()返回结果是一个buffer,相称于byte[] html = fs.readFileSync('haha.html').toString('utf8') dom= new jsdom.JSDOM(html) $=jquery(dom.window) console.log($('h1'))

cheerio只实现了jQuery中的DOM部分,相称于jQuery的一个子集。
cheerio的语法和jQuery完备同等,在利用cheerio时,险些觉得不到它和jQuery的差异。
在解析HTML方面,毫无疑问,cheerio是更好的选择。
如下代码利用cheerio解析haha.html文件。

cheerio=require('cheerio')html=require('fs').readFileSync(\"大众haha.html\"大众).toString('utf8')$=cheerio.load(html)console.log($('h1'))

只需20余行,便可实现大略的github爬虫,此爬虫只爬取了一页repo列表。

var axios = require(\公众axios\"大众)var cheerio = require(\"大众cheerio\"大众)axios.get(\"大众https://github.com/weiyinfu?tab=repositories\"大众).then(resp => { var $ = cheerio.load(resp.data) var lis = $(\"大众#user-repositories-list li\"大众) var repos = [] for (var i = 0; i < lis.length; i++) { var li = lis.eq(i) var repo = { repoName: li.find(\公众h3\"大众).text().trim(), repoUrl: li.find(\"大众h3 a\"大众).attr(\"大众href\公众).trim(), repoDesc: li.find(\"大众p\"大众).text().trim(), language: li.find(\"大众[itemprop=programmingLanguage]\公众).text().trim(), star: li.find(\公众.muted-link.mr-3\"大众).eq(0).text().trim(), fork: li.find(\"大众.muted-link.mr-3\公众).eq(1).text().trim(), forkedFrom: li.find(\公众.f6.text-gray.mb-1 a\"大众).text().trim() } repos.push(repo) } console.log(repos)})

三、更丰富的功能

爬虫不是目的,而是达成目的的一种手段。
获取数据也不是目的,从数据中提取统计信息并呈现给人才是终极目的。

在github爬虫的根本上,我们可以扩展出更加丰富的功能:利用echarts等图表展示结果。

要想让更多人利用此爬虫工具获取自己的github统计信息,就须要将做成一个网站的形式,通过搜索页面输入用户名,启动爬虫立即爬取github信息,然后利用echarts进行统计展示。
网站肯定也要用js作为后端,这样才能和js爬虫无缝衔接,不然还要考虑跨措辞调用。
js后端有两大web框架express和koa,二者API非常相似,并无利害之分,但express更加盛行。

如上设计有一处用户体验不佳的地方:当启动爬虫爬取github信息时,用户可能须要等待好几秒,这个过程不能让用户干等着。
一种办理思路是:让用户看到爬虫爬取的进度或者爬取过程。
可以通过websocket向用户推送爬取过程信息并在前端进行展示。
展示时,利用类似掌握台的界面进行展示。

如何存储爬取到的数据呢?利用MongoDB或者文件都可以,最好实现两种存储办法,让系统的存储办法变得可配置。
利用MongoDB时,用到js中的连接池框架generic-pool。

全体项目用到的库包括:

express:后端框架cheerio+axios:爬虫ws:websocket展示爬取过程webpack:打包工具less:样式措辞echarts:图表展示vue:模板渲染jquery:DOM操作mongodb:存储数据generic-pool:数据库连接池

试用地址:

https://weiyinfu.cn/githubstatistic/search.html​

案例地址:https://github.com/weiyinfu/GithubStatistic

原文链接:https://zhuanlan.zhihu.com/p/53763115

标签:

相关文章

IT技能赋能,驱动未来职业发展的新引擎

在当今数字化时代,信息技术(IT)的飞速发展已经深刻地改变了我们的生活方式和商业模式。随着人工智能、大数据、云计算等技术的不断成熟...

SEO关键词 2024-12-27 阅读0 评论0

IT征婚,开启智慧生活新篇章

随着互联网的普及,我国征婚网站如雨后春笋般涌现,为单身男女提供了便捷的交友平台。其中,IT征婚网站凭借其独特的魅力,吸引了大量技术...

SEO关键词 2024-12-27 阅读0 评论0

IT宠物摄影,记录生活点滴,捕捉温馨瞬间

随着科技的不断发展,摄影已经成为人们生活中不可或缺的一部分。在摄影领域,宠物摄影逐渐崭露头角,成为一项备受关注的细分市场。IT宠物...

SEO关键词 2024-12-27 阅读0 评论0

IT学习电脑,助力数字化时代的人才培养

随着信息技术的飞速发展,数字化时代已经到来。在这个时代,计算机已经成为人们工作和生活不可或缺的工具。为了适应这一时代的发展,掌握I...

SEO关键词 2024-12-27 阅读0 评论0

IT女包金球,时尚与科技的完美融合

在当今这个科技飞速发展的时代,人们对于时尚的追求也日益多样化。而在这个背景下,一款名为“IT女包金球”的时尚单品应运而生,成为了时...

SEO关键词 2024-12-27 阅读0 评论0

IT大道地铁,智慧交通的未来畅想

随着我国经济的快速发展,城市化进程不断加快,城市交通问题日益凸显。为了缓解城市交通压力,提高出行效率,我国正大力推广智慧交通系统。...

SEO关键词 2024-12-27 阅读0 评论0