设计网路爬虫过程中需要注意的解析问题

Posted xiniudaili

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计网路爬虫过程中需要注意的解析问题相关的知识,希望对你有一定的参考价值。

 

现在爬虫工作者越来越多,那么今天就讲讲就从解析数据和模拟器好好说说爬虫。
 
原本的称呼就是应该是叫解析网页,但是目前移动数据已经成为日常生活中不可或缺的数据走向,所以解析数据这个词来形容
 
会更加精准,解析数据。解析数据就是说当我们访问一个网址的时候,服务器就该网站把内容反馈给了我,我应该如何的把我
 
真正需要的数据提取出来。当服务器返回给我们的是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
 
模拟器。这样做的效率有点低,而且电脑不能做其他事情。
 
 

以上是关于设计网路爬虫过程中需要注意的解析问题的主要内容,如果未能解决你的问题,请参考以下文章

分布式多爬虫系统——架构设计

理解爬虫原理

爬虫好学么?

Python爬虫怎么挣钱?解析Python爬虫赚钱方式

scrapy初步解析源码即深度使用

如何要学习python爬虫,我需要学习哪些知识