标签:比赛 用法 类型 操作 task lte 参考 保存数据 取数据
很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!
QQ群:101677771
开始接触 CTF 网络安全比赛发现不会写 Python 脚本的话简直寸步难行……故丢弃 Java 学习下 Python 语言,但单纯学习语法又觉得枯燥……所以从 Python 爬虫应用实战入手进行学习 Python。本文将简述爬虫定义、爬虫基础、反爬技术 和 CSDN博客排行榜数据爬取实战。
网络爬虫又称网络蜘蛛、网络蚂蚁、网络机器人等,可以代替人们自动地在互联网中进行数据信息的采集与整理。在大数据时代,信息的采集是一项重要的工作,如果单纯靠人力进行信息采集,不仅低效繁琐,搜集的成本也会提高。
搜索引擎离不开爬虫,比如百度搜索引擎的爬虫叫作百度蜘蛛(Baiduspider)。百度蜘蛛每天会在海量的互联网信息中进行爬取,爬取优质信息并收录,当用户在百度搜索引擎上检索对应关键词时,百度将对关键词进行分析处理,从收录的网页中找出相关网页,按照一定的排名规则进行排序并将结果展现给用户。(除了百度搜索引擎离不开爬虫以外,其他搜索引擎也离不开爬虫,它们也拥有自己的爬虫。比如360的爬虫叫360Spider,搜狗的爬虫叫Sogouspider,必应的爬虫叫Bingbot。)
在这个过程中,百度蜘蛛起到了至关重要的作用。那么,如何覆盖互联网中更多的优质网页?又如何筛选这些重复的页面?这些都是由百度蜘蛛爬虫的算法决定的。采用不同的算法,爬虫的运行效率会不同,爬取结果也会有所差异。所以,我们在研究爬虫的时候,不仅要了解爬虫如何实现,还需要知道一些常见爬虫的算法,如果有必要,我们还需要自己去制定相应的算法,在此,我们仅需要对爬虫的概念有一个基本的了解。
在上面的图中可以看到,网络爬虫可以代替手工做很多事情,比如可以用于做搜索引擎,也可以爬取网站上面的图片,比如有些朋友将某些网站上的图片全部爬取下来,集中进行浏览,同时,网络爬虫也可以用于金融投资领域,比如可以自动爬取一些金融信息,并进行投资分析等。
由于互联网中的用户数据信息,相对来说是比较敏感的数据信息,所以,用户爬虫的利用价值也相对较高。利用用户爬虫可以做大量的事情,比如在2015年,有网友爬取了3000万QQ空间的用户信息,并同样从中获得了大量潜在数据:
用户爬虫还可以做很多事情,比如爬取淘宝的用户信息,可以分析淘宝用户喜欢什么商品,从而更有利于我们对商品的定位等。由此可见,利用用户爬虫可以获得很多有趣的潜在信息。
网络爬虫在大多数情况中都不违法,我们生活中几乎每天都在爬虫应用(如百度),从目前的情况来看,如果抓取的数据属于个人使用或科研范畴,基本不存在问题;而如果数据属于商业盈利范畴,就有可能属于违法行为。
Robots协议
Robots协议(爬虫协议)的全称是“网络爬虫排除标准”(Robots Exclusion Protocol),网站通过Robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取。该协议是国际互联网界通行的道德规范,虽然没有写入法律,但是每一个爬虫都应该遵守这项协议。
淘宝网对用户代理为百度爬虫引擎进行了规定,我们可以查看淘宝网的 robots.txt:
*
表示允许所有搜索引擎蜘蛛来爬行抓取,也可以把*去掉,改为特定某一个或者某些搜索引擎蜘蛛来爬行抓取,如百度是Baiduspider,谷歌是Googlebot;
网络爬虫的约束
除了上述Robots协议之外,我们使用网络爬虫的时候还要对自己进行约束:过于快速或者频密的网络爬虫都会对服务器产生巨大的压力,网站可能封锁你的IP,甚至采取进一步的法律行动。因此,你需要约束自己的网络爬虫行为,将请求的速度限定在一个合理的范围之内。简而言之,如果你因为爬取数据导致人家服务器宕机,你就惹祸上身了……
进入正题之前通过一张图来简要了解下爬虫的工作过程:
访问本次爬取目标——CSDN博客排行榜:https://blog.csdn.net/rank/writing_rank:
具体数据包如下:
1、初始化参数:
2、爬取网址:
3、分析json包:
4、下载保存excel表格
5、完整脚本:
此处代码中出现使用了 yield 的函数,属于Python生成器(generator),跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器。
在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行。调用一个生成器函数,返回的是一个迭代器对象。
更多 yield 关键词的理解可参考:python中yield的用法详解——最简单,最清晰的解释。
在Pycharm中运行脚本:
1、通过user-agent来控制访问
user-agent 能够使服务器识别出用户的操作系统及版本、cpu类型、浏览器类型和版本。很多网站会设置 user-agent 白名单,只有在白名单范围内的请求才能正常访问。所以在我们的爬虫代码中需要设置 user-agent 伪装成一个浏览器请求。有时候服务器还可能会校验 Referer,所以还可能需要设置 Referer (用来表示此时的请求是从哪个页面链接过来的)。
2、通过IP来限制
当我们用同一个ip多次频繁访问服务器时,服务器会检测到该请求可能是爬虫操作。因此就不能正常的响应页面的信息了。解决办法常用的是使用IP代理池。网上就有很多提供代理的网站。
3、通过前端参数加密
某些网站可能会将参数进行某些加密,或者对参数进行拼接发送给服务器,以此来达到反爬虫的目的。这个时候我们可以试图通过js代码,查看破解的办法。这里就要请出一个大杀器:”PhantomJS“。PhantomJS是一个Python包,他可以在没有图形界面的情况下,完全模拟一个”浏览器“,js脚本验证什么的再也不是问题了。
4、通过robots.txt来限制爬虫
robots.txt是一个限制爬虫的规范,该文件是用来声明哪些东西不能被爬取。如果根目录存在该文件,爬虫就会按照文件的内容来爬取指定的范围。但是这实际上只是一个”君子协议“,遵守与否,都在于爬虫的编写者。
标签:比赛 用法 类型 操作 task lte 参考 保存数据 取数据
原文地址:https://www.cnblogs.com/snsar/p/13596394.html