现在爬虫工作者越来越多,那么今天就讲讲就从解析数据和模拟器好好说说爬虫。
原本的称呼就是应该是叫解析网页,但是目前移动数据已经成为日常生活中不可或缺的数据走向,所以解析数据这个词来形容
会更加精准,解析数据。解析数据就是说当我们访问一个网址的时候,服务器就该网站把内容反馈给了我,我应该如何的把我
真正需要的数据提取出来。当服务器返回给我们的是html的时候,我需要提取到具体哪个 DIV 下面的内容;当服务器返回给我
的是 XML 时,我也需要提取某个标签下面的内容。
我们采用的最原始的方式就是使用「正则表达式」,「正则表达式」是一门通用的技术,大多数语言中都具备类似的库巴,
在 Python 中对应的是 re 模块,不过,正则表达式非常难于理解。一般情况下不建议使用。Python 中的 BeautifulSoup 和
Requests-HTML 非常适合通过标签进行内容提取。
模拟器
爬虫的设计者在设计爬虫的时候需要注意一个很难堪的现状:Web 端越来越 JS 化,手机端 key 值校验越来越复杂以致无法破解。这时候只能选择模拟器来完全假扮成用户了。
网页端常见的模拟浏览器工具有 Selenium,这是一个自动化测试工具,它可以控制浏览器作出点击,拖拉等动作,总之就是代替人来操作浏览器,通常搭配 PhantomJS 来使用。
PhantomJS 是一个基于WebKit的服务器端 JavaScript API,它基于 BSD开源协议发布。PhantomJS 无需浏览器的支持即可实现对 Web 的支持,且原生支持各种Web标准,如DOM 处理、JavaScript、CSS选择器、JSON、Canvas 和可缩放矢量图形SVG。不过目前好像已经停止维护啦。
不过还好,Selenium 同样可以操作 FireFox 和 Chrome 等浏览器。
除了 web 端,手机端 APP同样可以使用模拟器技术来完全模拟人的动作。
当需要并发的时候,我们手头上没有足够多的真机用来爬取,就要使用 genymotion 这样的虚拟机,使用起来跟 linux 虚拟机是一样的,下载安装包配置就可以了。
爬虫的并发和分布式
Python 作并发爬虫实际上毫无优势,不过如之前所讲,太高并发的爬虫对别人的服务器影响太大了,聪明的人不可能不作限制,所以高并发语言实际上优势也不大。Python 3.6 以后异步框架 Aiohttp 配合 async/await 语法也非常好用的,能在效率上提升不少。
总结
爬虫并不是一件特别简单得事情,但是要面临得困难也有很多。
要做好一个爬虫要注意事项有:
URL 的管理和调度。聪明的设计往往容错性很高,爬虫挂掉以后造成的损失会很小。
数据解析。多学点正则表达式总是好事情,心里不慌。
IP受限。解决方法可以借助代理IP。
模拟器。这样做的效率有点低,而且电脑不能做其他事情。
原文地址:https://www.cnblogs.com/xiniudaili/p/10214497.html