在爬虫开发中,大家可以很轻易地 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 解析器:
中国香港较大 的隐形富豪,坐享千亿元身价,遗憾错过了何超琼这一儿媳妇 中国香港做为在我国的特别行政区,经济发展比较发达,向来有“奢侈品商城”的头衔,所问世的富商也是不计其数。除开大伙儿熟识的李嘉诚先生...
影流之主——劫是2013年年底出的一个英雄,到现在已经算得上是元老级的中单刺客了。他以超高的物理爆发以及很高的操作上限而闻名,再加上他没有蓝耗,技能消耗的是自身能量值,所以他根本不用担心没蓝而回家丢失...
面对现在的高房价,许多人对于楼市都持观望态度,但是开发商却依旧没有停下开发的脚步,民众的购买力虽然下降了,但是我国的房子却还是越建越多,富人拥有的房子更多了,穷人没房的也还是买不起,楼市拉大了贫富差距...
广州车模手机微信,美女学妹水蓉预定陪游,今日为大伙儿详细介绍如果服务平台的广州市女学妹水蓉,年纪21,个子166的高端模特等基本资料,大家将出示女学妹的联系电话、价格、相片、要多少钱、预定步骤及商务伴...
本文导读目录: 1、超级黑客txt全集下载 2、推荐几本像《疯狂的硬盘》《超级电脑》一样的技术流小说 3、日光爱人txt全集下载 4、《重活之超级黑客》最新txt全集下载 5、《最强黑...
创作者:Vivek Ramachandran, Cameron Buchanan 译员:巨龙 协议书:CC BY-NC-SA 4.0 知彼知己,百战百胜。 小孙子,《孙子兵法》 做为网站渗透...