js黑马教程(教你用简单的JS来搞点坏事)

日期:2023-12-18 16:02:47 浏览: 查看评论 加入收藏

下面一起来看看关于js黑马教程(教你用简单的JS来搞点坏事)的相关信息吧。关注我们,了解更多资讯。

我先来介绍一下什么是网络爬虫:

网络爬虫(又被称为网页 蜘蛛 ,网络机器人,在 FOAF 社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取 万维网 信息的程序或者脚本。另外一些不常使用的名字还有 蚂蚁 、自动索引、模拟程序或者 蠕虫 。

总的来说,百度搜索就是中国最大的网络爬虫,上面可是收藏了N多的你懂的网站~

js黑马教程(教你用简单的JS来搞点坏事)(1)

拿JavaScript写爬虫,能行吗?

爬虫,大多人对于爬虫的理解都停留在使用后端语言如Python写的爬虫。但是实际上,使用客户端Javascript有诸多后端爬虫所无法拥有的优势:

  • 可以方便的分享给其他人用,只要对方电脑里有浏览器
  • 由于跑在客户端,几乎可以无视对方网站的反爬虫机制
  • 可以拥有完善的UI,无开发基础的小白也可以随意使用

这东西应该怎么启动?

而“客户端JavaScript爬虫如何运行”问题,回答这个问题非常简单,大致有3种运行JavaScript的代码:

  • 存浏览器书签,以javascript:打头,点击即可运行
  • 复制到浏览器console中按回车
  • 有个浏览器扩展叫做“油猴子”

这里我们主要看下第三种,油猴脚本方式运行。

或许你听说过油猴扩展,他在Firefox叫做Greasemonkey在Chrome叫做Tampermonkey,你可以轻松的在浏览器的扩展商店找到它。而关于其本身有何作用,一句话

js黑马教程(教你用简单的JS来搞点坏事)(2)

(*)

按照规则,在不同的URL额外运行一段JavaScript代码

请参考下面的例子:

// ==UserScript== // @name Pxer // @include http://www.pixiv.net* // ==/UserScript== javascript:void((function() { document.documentElement.appendChild( document.createElement('script') ).src='http://pxer-app.pea3nut.org/jsonp.js?' ( new Date); })());

==UserScript==是油猴脚本的规则,上面的规则告诉油猴:

当浏览器打开http://www.pixiv.net*的页面时,执行下面的脚本

而脚本的内容则是:通过jsonp的方式向页面引入一个js文件。

这就可以做很多事了。(不是坏事哦~)

优势,还是非常多的

js黑马教程(教你用简单的JS来搞点坏事)(3)

上图是一个二次元插画交流站pixiv.net。图中显示“Pxer 7”的那一个长条是原本不存在与原网站中的,而是通过油猴脚本自动载入JavaScript脚本来创建的。

若想访问图中的原始链接可以点击这里,可能你需要先在pixiv.net注册一个账号

通过油猴脚本自动载入,你可以做到:

完全不影响原网站使用的情况下,利用强大的JavaScript向用户提供额外的功能

再结合一开始提到的优点:

  • 可以给任何人使用!哪怕是无开发基础的小白
  • 不会被封杀!由真实用户操作,封账号、IP、验证码等反爬虫策略你觉得会对客户端爬虫有效吗?
  • 利用HTML CSS,构建一个漂亮的UI完美融入原网站,简直不能再简单~

突然莫名的感觉很无敌有木有?

说了这么多,来个实际实现的例子

空说无凭,来看一个实际的客户端JavaScript爬虫开源项目 —— Pxer

  • Github:https://github.com/pea3nut/Pxer
  • 项目官网:http://pxer.pea3nut.org/

Pxer是一个纯客户端JavaScript编写的爬虫,无需任何配置即可直接在浏览器端运行。

js黑马教程(教你用简单的JS来搞点坏事)(4)

Pxer最大作用是将pixiv.net网站(类似于花瓣网)中的图片作品快速的抓取下来。它不是简单的检索img标签,而是通过一定的算法和Ajax请求来完成更为复杂的功能。

关于项目的详细描述,可以参考项目官网和Github项目主页

良好的jsDOC格式注释和详细的文档都已经为你准备好了~~

  • https://github.com/pea3nut/Pxer

让JavaScript来的更猛烈些~~

,

支付宝转账赞助

支付宝扫一扫赞助

微信转账赞助

微信扫一扫赞助

留言与评论(共有 0 条评论)
   
验证码: