在爬虫开发中,大家可以很轻易地 bypass 所谓的 UA 限制,甚至用 scrapy 框架轻易实现按照深度进行爬行。但是实际上,这些并不够。关于爬虫的基础知识比如数据处理与数据存储多线程之类的。
请大家移步 FB:
该系列文章都是本人所写,能力有限请多包涵。
0x01 前言
在进行爬虫开发的过程中,我们会遇到很多的棘手的问题,当然对于普通的问题比如 UA 等修改的问题,我们并不在讨论范围,既然要将修养,自然不能说这些完全没有意思的小问题。
0x02 Selenium + Phantom ***
这个东西算是老生长谈的问题吧,基本我在问身边的朋友们的时候,他们都能讲出这条解决方案:
Selenium + Phantom *** (Firefox Chrome之类的)
但是真正的有实践过的人,是不会把这个东西投入生产环境的,首先更大的问题就是Selenium + Phantom *** 非常的慢,这种慢的原因就是因为他要加载这个网页所有的内容,比如图片资源,link 中的 CSS, *** 都会加载,而且还会渲染整个网页,在渲染结束之后才会允许你操作网页的元素。当然可能会有读者问,Selenium 作为可以自动化编写测试脚本的一个模块,他是自带 HOOK 功能的,在 Selenium 的 API 中也有介绍说 Selenium 可以控制等待某一个元素加载成功时返回页面数据。
没错的确是这样的,我们确实可以使用 Selenium 的内置 api 去操作浏览器完成各种各样的操作,比如模拟点击,模拟填表,甚至执行 js,但是更大的问题我们还是没有解决:归根结底是操作浏览器来进行工作的,启动需要打开浏览器(等待一定时间),访问网页之后渲染,下载相应资源,执行 *** ,这么多的步骤,每一个步骤都需要或多或少的等待时间,这就好比,我们就是在使用浏览器做这样的事情,只不过是加上了精准的鼠标定位而已。
当然说了这么多,Selenium 虽然不适合做生产解决方案,也并不是没有别的解决办法了。
0x03 execjs
execjs 是一个在 Python 中执行 js 的模块,听到这个,大家可能会觉得耳目一新:欸?那我是不是可以爬虫爬下来 js 代码然后手动控制 js 执行,然后就可以控制自己想要的元素,拿到想要的结果,而且也并不丢失效率。
但是我要说这样的想法,实际上是非常的 naive,虽然有了这个 js 引擎,但是,我们需要很多很多的轮子,为什么呢?来听我一步一步解释:
1. js 的强大之处其实并不在于松散的语法与容错,而是在于对 BOM 对象和 DOM 对象的操作。举个例子来说,比如,一个网页的表单,是通过操作执行 js 来提交的。 那么,问题就在于你有办法仅仅用这个 execjs 来执行这段 js 来提交表单么? 显然,这是行不通的。为什么呢?因为对于我们来说的话 execjs 是一个独立的模块,我们没有办法把我们静态扒下来的html 文档和 execjs 建立联系。
2. 如果非要建立联系,那么你需要自己完成 js 对 html 的 DOM 对象的绑定,具体怎么完成呢?js 在浏览器中怎么与 DOM 树绑定,你就需要怎么去做。但是要怎么做啊,首先你需要一个自己构建 DOM 树,然后才能进行手动绑定。这个轮子,确实是非常的大。
但是如果你真的有大把的时间,那么应该怎么去做这个事情呢?没错要不你去 HOOK 一个webkit 要不你去自己构建一个 html 的解析器。那么我就在这里稍微提一下这个很有趣的事情:如果构建一个 HTML 解析器:
本文目录一览: 1、QQ中钓鱼病毒怎么办 2、什么是钓鱼程序? 3、什么是钓鱼软件 4、谁能准备的告诉我,黑客说的(钓鱼)是什么意思? QQ中钓鱼病毒怎么办 钓鱼病毒是黑客设定的钓鱼程序...
求黑客QQ(求黑客师傅)(tiechemo.com)一直致力于黑客(HACK)技术、黑客QQ群、信息安全、web安全、渗透运维、黑客工具、找黑客、黑客联系方式、24小时在线网络黑客、黑客业务、黑客联盟...
一、怎么外国怎么找黑客 1、怎么帮忙查对方ip黑客安卓 酷狗破解真正的黑客称这些人为黑客攻击者,鄙视他们。怎么外国手机刷超q不幸的是,许多记者和作家倾向于错误地利用黑客作为黑客来激怒真正的黑客。安卓...
找黑客找回被盗的qq号相关问题 装黑客软件相关问题 黑客怎么不攻击阿里巴巴 怎么控制另一台手机使用时间(如何控制手机使用时间)...
中新网莫斯科12月8日电 (记者 王修君)8日俄罗斯外长拉夫罗夫在俄罗斯国际事务理事会视频会议上发言时表示,西方国家正试图破坏联合国权威,让世界重返单极模式。 拉夫罗夫说,世界秩序的概念已经...
针对睡觉时间少的人而言,必须增加就寝时间,而睡眠好的人就需要持续保持,培养优良的作息规律才有利于人体的身心健康,下边我产生:日常生活提高睡眠时间的小窍门 怎么判断睡得怎么样。 日常生活提高睡眠时...