Python这么火,却还面临3个问题?你知道吗

135 篇文章 2 订阅
132 篇文章 1 订阅

前言

传统的爬虫程序从初始网页的一个或多个URL开始,并获取初始网页的URL。在对网页进行爬行的过程中,它不断地从当前网页中提取新的URL并将其放入队列中,直到满足系统的某些停止条件为止。聚焦爬虫的工作流程是复杂的。根据一定的网页分析算法,对与主题无关的链接进行过滤,保留有用的链接,并将它们放入等待的URL队列。
我们来看看后台面临的问题

问题一:交互问题

有些网页往往需要与用户进行一些交互,然后进入下一步,如输入验证代码、拖动滑块、选择几个汉字。网站之所以这样做,往往是为了验证访问者是人还是机器。
爬虫程序很难处理这种情况。传统的简单图片验证码可以通过图形处理算法读取内容。但是随着模式的多样性和多样性,越来越多的人和神都愤怒和不正常的验证码(尤其是买火车票时,他们想每分钟都爆发出粗口)。这个问题越来越严重。

小编推荐一个学python的学习qun 740322234
无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!

问题2:javascript解析

如前所述,javascript可以动态生成dom。目前,大多数网页都属于动态网页(内容由javascript动态填充),特别是在移动端,SPA/PWA应用越来越流行。网页中最有用的数据是通过Ajax/Fetch动态获取的,然后由JS填充到DOM树中。简单的HTML静态页面中几乎没有有用的数据。
目前,主要的解决方案是直接为JSAjax/Fetch请求请求Ajax/Fetch的URL,但也有一些Ajax请求参数依赖于javascript动态生成,如请求签名、密码加密等。
如果你使用后台脚本来做javascript所做的事情,你需要清楚地理解原始网页代码的逻辑,这不仅非常麻烦,而且也会使你的爬行代码非常庞大,但更致命的是,javascript所能做的一些事情很难甚至不可能被模仿,例如一些网站使用拖动滑块到某个位置。在爬虫系统中,很难模拟验证码机制。
事实上,总而言之,这些缺点最终是由于爬虫不是浏览器,也没有JavaScript解析引擎。为了解决这个问题,主要的策略是在爬虫中引入JavaScript引擎,比如Phantom JS,但是它有明显的缺点,比如当服务器同时有多个爬行任务时,资源太多。
更重要的是,这些无窗口的javascript引擎通常不像在浏览器环境中那样被使用。当一个页面跳进去时,这个过程很难控制。


问题三:IP限制

这是目前对后台爬虫中最致命的。网站的防火墙会对某个固定ip在某段时间内请求的次数做限制,如果没有超过上线则正常返回数据,超过了,则拒绝请求,如qq 邮箱。

值得说明的是,ip限制有时并非是专门为了针对爬虫的,而大多数时候是出于网站安全原因针对DOS攻击的防御措施。后台爬取时机器和ip有限,很容易达到上线而导致请求被拒绝。目前主要的应对方案是使用代理,这样一来ip的数量就会多一些,但是建议选用安全高效的代理IP,保证数据安全。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值