动态网页抓取(Python实现爬虫时常见的8个难点及基本解决思路 )
优采云 发布时间: 2022-02-08 21:19动态网页抓取(Python实现爬虫时常见的8个难点及基本解决思路
)
Python功能强大,熟练的程序员5分钟就能写出有价值的爬虫,比如:
但是被抓到的网站大部分都不是木鸡给你抓的,被抓到了还会反抗!
这是网站 和程序员之间的游戏!他们都是程序员,何必呢?程序员为什么要让程序员为难!
任何游戏都不容易!因为路高一尺,魔高一尺。
抓住他,他就会防守,你改进他的抓法,他就会提高他的防守和抓法!
如果你抓住它,这不是对 网站 程序员的侮辱吗?
如果有人问你:某个网站能被抓到吗?
答案是肯定的:是的!
从技术角度来说,只要能看到网页上的内容,绝对可以抢到!无非就是抓取难度的大小。
本文总结了实现爬虫的8个常见难点及基本解决方案。
1. 不小心爬进了监狱
从技术角度看:世界上没有抓不到的网站!
从法律上讲,有句话说:爬虫写得好,监狱饭早吃!我现在还有一个好哥们,说这话的时候我眼里含着泪。
俗话说,线有规矩,爬虫有规矩!错误规则是 robots.txt。
robots.txt 是 网站 写给爬虫的语句,声明内容不能被爬取。robots.txt 一般放在网站 的根目录下。
以B站为例,直接在浏览器中输入:
您可以看到以下内容:
明确以“/include/”、“/mylist/”等开头的URL不能被抓取。
如果你说不能逮捕你,就不要逮捕它,否则警察会逮捕你!
但是国内很多网站不守规矩,不讲武功,网站里面也没有robots.txt。那我们该怎么办?
可以看出几个方面:
如果不确定能不能抓到,也可以直接联系网站的楼主问问能不能抓到,或者有没有数据接口。
2. 复杂多变的网页结构
网页的复杂性和可变性体现在两个方面:
1.同一个网页在显示不同的内容时会有不同的结构。
比如产品详情页,不同的产品,使用不同的网页模板,这是正常的情况。
再比如产品列表页,没有产品,有一个产品,有多个产品,款式可能不一样。
如果你的爬虫只处理一种情况,那么在爬取过程中必然会出现问题。
2.网页功能或设计风格的变化。
一般爬虫使用xpath根据网页的结构来解析内容。一旦结构发生变化,就无法解析。
如何解决?
3. IP 阻塞
IP 拦截是一种常见的反爬虫方法。
当网站 发现某个IP 地址发送的请求过多时,会暂时或永久阻止来自该IP 的请求。
熟练又乖巧的网站一般会提前定好规则,比如一天只访问500次,或者一分钟不超过10次访问。
超过次数自动屏蔽,超过时限自动解锁。
技术不好的网站可能没有这样的规则,网站挂掉,或者管理员发现异常后,才查看日志才发现请求太多。
因为他们没有现成的规则和技术手段,他们可能简单粗暴,直接在Web Server上设置永久封禁你的IP地址。
处理IP阻塞的一般方法:
4. 图片验证码
图片验证码是另一种最常用的反爬技术。
当你登录网站,或者检测到你的请求太多时,网站会弹出一个图片,要求你输入图片上的内容。
图片上的内容通常是扭曲的文字,甚至是让你输入计算结果的数学公式。
这一切都很好。一般使用OCR技术,比如Python的Tesserocr库,可以自动识别图片上的内容,然后自动填写,继续爬取。
但是路高一尺,恶魔一尺高,图像验证码也在不断的进化升级,比如那些来自国外的,常常让我这个活生生的人哭泣:
或 12306 像这样:
简单的 OCR 技术很难处理此类图像,但总有一些方法:
5. 蜜罐陷阱
蜜罐陷阱是 网站 开发人员用来快速识别爬虫的一种肮脏技巧。
添加一些到 网站 的链接,并通过 CSS 使它们对人类不可见:
display: none
爬虫在解析HTML的时候,可以找到这些链接,所以点击链接,爬进去。
一旦爬进去,立即封锁你的IP。
解决方法也很简单,就是在解析网页的时候加一些逻辑判断是否可见。
6. 网页加载缓慢
一些 网站 响应很慢。当请求量很大时,会时不时地失败。
这对人们来说可能很好,只需稍等片刻,刷新页面就可以了。
爬虫还需要添加相应的逻辑:
7. Ajax 动态内容
许多网站使用Ajax 来动态加载某些东西。也就是说,主请求只返回网页的主要内容,其他内容通过后续的ajax请求动态获取。
以B站为例,视频详情页的HTML页面只有视频的基本信息,评论等都是通过后续的ajax请求获取的。
我们用爬虫爬的时候,第一次只能拿到HTML,后面的内容是拿不到的。
尤其是近几年,前后端分离流行起来,所有的数据都是通过Ajax获取的。得到的 HTML 页面只是一个空架子,里面没有任何数据。
一般有两种解决方案:
第一种方法是技术练习,但一旦分析,爬行速度会更快。
8. 登录请求
某些内容需要先登录才能访问。在这种情况下,请先阅读本文的第 1 点,以防止爬进监狱。
但是如果是自己的账号,一般是没问题的。
解决方案:
9. 批量爬取
专业的爬虫不会满足于简单的爬取。它的名字里有爬虫。它将抓取网页上的链接,并自动抓取链接中的内容。如果循环继续下去,整个世界都将被爬行。是吗。
这带来了很多问题,仅举几个例子:
当你面对这些问题时,爬虫问题就变成了“爬虫+工程”的问题。
简单的解决方案是使用爬虫框架,比如Python中的Scrapy,它会帮你记录抓到什么,没抓到什么,设置抓取的深度和宽度等。
稍微复杂一点,需要专业的团队,利用大数据技术做并发处理和数据处理。这是另一个层面的问题。
这是我的一点经验和分享,不一定全面。
关于Python技术储备
学好 Python 是赚钱的好方法,不管是工作还是副业,但要学好 Python,还是要有学习计划的。最后,我们将分享一套完整的Python学习资料,以帮助那些想学习Python的朋友!
一、Python全方位学习路线
Python的各个方向都是将Python中常用的技术点进行整理,形成各个领域知识点的汇总。它的用处是你可以根据以上知识点找到对应的学习资源,保证你能学得更全面。
二、学习软件
工人要做好工作,首先要磨利他的工具。学习Python常用的开发软件就到这里,为大家节省不少时间。
三、入门视频
当我们看视频学习时,没有手我们就无法移动眼睛和大脑。更科学的学习方式是理解后再使用。这时候动手项目就很合适了。
四、实际案例
光学理论是无用的。你必须学会跟随,你必须先进行实际练习,然后才能将所学应用于实践。这时候可以借鉴实战案例。
五、采访信息
我们必须学习 Python 才能找到一份高薪工作。以下面试题是来自阿里、腾讯、字节跳动等一线互联网公司的最新面试资料,部分阿里大佬给出了权威答案。看完这套面试材料相信大家都能找到一份满意的工作。
本完整版Python全套学习资料已上传至CSDN。需要的可以微信扫描下方官方CSDN认证二维码免费获取【保证100%免费】