学习爬⾍的感想和⼼得
写爬⾍真不是件简单的事
  学习了⼤概两个⽉的爬⾍,渐渐感觉到写爬⾍并不是件简单的事,有诸多的考虑,先简单的记录⼀下,有时间分部分做⽰例
⼀、学习爬⾍知识
  我是从python3开始做爬⾍的,⾸先,python3的语法必须知道,不过python3并不难,语法也⾮常简洁。但是,写着发现有个⽑病,就是⽐如⼀个形参,由于不确定类型,.⽆法像java那样补全,导致你如果忘了⼀个函数,必须查看代码或⼿册。。。不过这也是动态语⾔都有的问题,但好的IDE会帮你记录,所以使⽤好的IDE很有必要。。哈哈。
selenium怎么使用  然后是学习python的各种库,为了打好基础,从基础的库开始学习会⽐较好,⽐如urlib,然后学习requests,这种是⽤来发请求的。返回的数据⼜是各种各样的类型,有html,js,json,字符串等,针对每种格式,当然都需要合适的解析器,当然,正则都能做。。。这⾥,解析html⽤到
xpath,beautifulsoup,pyquery等库,js代码需要js引擎来运⾏和分析,例如nodejs,v8,json的解析要⽤到json库,字符串就看具体情况了。
做完这些,基本上可以开始爬取⼀些数据了。。。但是,如果爬⾍真的就这么简单的话,,那就好了哈
  然后你会想提⾼爬取的速度,你了解到requests库是同步请求,也就是从发出请求到收到响应,线程⼀直在等,你当然啊会想到多线程,但python单进程只能跑满⼀个核。。。并且多线程也没那么好写吧,同步控制,分配任务也需要挺多事的。所以,从python3.5开始,新增了⼀个aiohttp--异步请求库,它可以发送⼀批请求,以事件驱动,根据回调函数来实现单线程异步。或许你会觉得这还是不够⽅便,开始使⽤爬⾍框架,例如scrapy,这下速度突飞猛进,瓶颈在带宽或io上了!
⼆、分析⽹站
  好了,这下普通的⽹站能随⼼所欲的爬了,直到这天,你打开了某做了反爬的⽹站。。。
为啥爬了⼀下就不能爬了?为啥返回结果和浏览器打开的不⼀样啊?怎么这个要验证码啊?怎么这个要登录?于是开始了解到需要使⽤代理防⽌封ip,需要伪造头部装得够像浏览器。需要分析请求,分析各种参数代表什么意思,如何伪造,开始学习js和分析js的加密代码---这个是真的恶⼼,使⽤postman发请求和vscode编码和nodejs运⾏进⾏调试,或者可以⽤selenium+chrome这种⼤杀器直接莽过去,可是速度可⽐直接请求api慢多了。碰到需要登录才能获取cookies 才能爬的⽹站,开始做注册机(但是现在⼀般要⼿机号,成本⾼),或者买账号,⽤来做cookie池。登录需要识别验证码?验证码
可就千奇百怪了,⼈⼯打码or打码平台or机器学习?终于,在掌握这么多分析技能之后,感觉到爬取⼀个⽹站多么⿇烦,需要很⾼成本。。。
三、部署项⽬
  前⾯终于写好了爬取复杂⽹站的分析和技巧,现在需要部署项⽬,服务器就需要不少,数据库需要准备吧,需要做分布式
吧,docker,hadoop了解⼀下?还要维护稳定,处理各种异常,总不能跑⼀下就挂了吧。还有,⽹站突然改动⼀下加密,,得跟着改啊。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。