python高级—— 从趟过的坑中聊聊爬虫、反爬、反反爬,附送一套高级爬虫试题

本文介绍了作者在Python爬虫实践中遇到的各种问题和反爬机制,包括法律问题、爬虫分类、爬虫工具选择、常见问题及反爬策略。详细讨论了User-Agent、Cookies、请求头中的特殊字段、请求头的Accept、referer、登录验证、token验证等反爬技术,以及如何应对这些问题。此外,还分享了一套高级爬虫试题,供读者自我检测和提升。
摘要由CSDN通过智能技术生成

前言:

时隔数月,我终于又更新博客了,然而,在这期间的粉丝数也就跟着我停更博客而涨停了,唉

是的,我改了博客名,不知道为什么要改,就感觉现在这个名字看起来要洋气一点。

那么最近到底咋不更新博客了呢?说起原因那就多了,最主要的还是没时间了,是真的没时间,前面的那些系列博客都还没填坑完毕的(后续都会填上的)

最近有点空余就一直在开发我的项目,最近做了两个项目:

IPproxy,看名字就知道啦,就是一个ip代理池,爬取了各大免费的代理网站,然后检测可用性, github地址 相关的介绍github上已经说明了

get_jobs,爬取了几十个招聘类网站的数据, github地址 同样的,相关的介绍github上已经说明了

根据以上爬取的大概也许可能接近上百个网站吧,加上我初学爬虫的时候爬的网站,现在也算是爬了有接近上千个网站了,对爬虫也算是小有心得了,下面就开始说说吧

以下是总结式的解析,个人觉并不太适合零基础的朋友,也不会有过多的图文展示,当然我也会尽量的把问题说清楚点,而且我也不是爬虫大佬,只是根据最近的爬虫经历总结出的经验,我确实不太建议零基础的朋友往下看,你可以先看看我之前的博客文章或者看其他大神的文章之后再来看我这篇,因为爬虫涉及了前端和后端还有前后端之间的交互等的技术,一些底层的原理之类的,不是说不给零基础的朋友看,是如果没这些知识做基础可能看不懂(不是瞧不起小白的意思,我也是小白过来的)。当然爬虫界的大佬们如果偶然点开,那还请多多包涵,我目前技术确实还有待提升

爬虫前提:

1.法律问题

最近时不时总是冒出一两个因为爬虫入狱的新闻

不一一截图了,自己网上搜吧,其实现在越来越多了

有朋友要说,“为什么我学个爬虫都被抓吗?我犯法了吗?”  这个目前还真的不好说,主要是什么,目前爬虫相关的就只有一个robots协议,而我们都知道robots协议是针对于通用爬虫而言的,而聚焦爬虫(就是我们平常写的爬虫程序)则没有一个严格法律说禁止什么的,但也没有说允许,所以目前的爬虫就处在了一个灰色地带,而很多情况下是真的不好判定你到底是违法还是不违法的。 好消息是,据说有关部门正在起草爬虫法,不久便会颁布,后续就可以按照这个标准来进行了。

2.爬虫分类:

上面说了,有通用爬虫和聚焦爬虫

通用爬虫:

针对于百度,搜狗,谷歌这类搜索引擎类的爬虫程序

聚焦爬虫:

又名定向爬虫,就是我们平时写的针对某个需求或者某个问题而写的程序

3.爬虫能爬什么数据:

一句话, 所见即所得 ,什么意思,你用浏览器能访问,能查看的网页数据,用爬虫就可以爬到,反过来,你浏览器都无法访问的,爬虫是无法爬到的,除非你用一些违法的手段获取到

举个例子:

  • 你用浏览器打开百度,打开淘宝,可以看到的一切数据,爬虫都可以获取到
  • 你有优酷的vip账号,你可以用浏览器看vip视频,那么爬虫也可以获取到
  • 你没有优酷的vip账号,你无法查看vip视频,爬虫也就无法获取到

我知道有一部分圈子里的朋友之间流传着有什么破解vip之类的,那种其实也是符合所见所得的,你没有vip,别人有啊,假如一个已有vip账号的人把视频下载下来上传到云服务器A,然后你访问某个网站,网站后台请求的是云服务器A,最后呈现视频数据给你,不说了,扯远了

爬虫工具:

一.工具分类:

分类看以什么分了,有自动的,有手动的,有在线的,有离线的,有傻瓜式的,有非傻瓜式的,有分析辅助为主的,有自开发式的,看每个人怎么定义了

傻瓜式的:

比如什么 八爪鱼,爬山虎 ,啥啥的一大堆,在线的傻瓜式的工具,根据提示点点鼠标,输入几个字就完了,但是这种工具普遍得到的结果不是很理想

分析类的:

以下的都是作为辅助分析整个请求过程的工具

  • fiddler :常用的抓包分析工具
  • charles:和fiddler类似,优点是可以自定义上下行网速、代理、反向代理,且配置简单、可解析AMF协议数据
  • wireshark:网络封包分析软件,功能非常强大,但是在爬虫层面来说,辅助的意义不算大
  • burpsuite:类似fiddler,但是功能更多更具体,且这个包在网络安全行业来说是个必不可少的大杀器
  • .......

而需要点技术的就是自开发式的,比如自己借助某个开发语言写爬虫程序(或者说脚本)就是了

二.自开发式的哪些开发语言可以作为爬虫

其实还挺多的

  • php
  • javascript —— node.js
  • java
  • python
  • golang

php写爬虫是可以的,但是多线程多进程不太支持,所以针对大型一点的项目不够理想

nodejs的curl工具也是可以写爬虫的,有什么优缺点我暂时不知道,我没用过

java的话,听大佬说的,写出来的爬虫程序很臃肿,不是说不好哈,我暂时只是有耳闻,没用过

golang天生支持高并发,性能提升很多,也可以做爬虫,这个我暂时只是有耳闻,没用过

python的话写爬虫真的是一种神器般的存在,目前网上的爬虫程序,可能百分之八九十都是用Python写的

其他语言只要支持网络服务应该都可以写爬虫,这里就不多说了

三.python的哪些相关的工具可以写爬虫

自带的库:

python2下:

  • urllib
  • urllib2
  • urllib3
  • httplib
  • htttplib2
  • re
  • ......

python3下:

  • urllib

第三方的库:

  • requests
  • crawley
  • protia
  • newspaper
  • pyspider
  • python-goose
  • scripy
  • scripy-redis

其他相关的库:

  • lxml
  • json
  • beautifulsoup
  • re
  • pyquery
  • execjs
  • js2py

目前就想到这么多

平常的话,做网络交互我就用requests库,但是有些小问题,用多了的人应该都知道,requests库里的异常类不够全,有时候报错了无法捕获

做数据解析的话我用 json,re , lxml, beautifulsoup,pyquery,execjs,js2py 都有在用,只要有场景需要就会用

大型项目就上 scripy ,需要分布式就上 scripy-redis

四.爬虫中常见的问题,常见的反爬机制

其实我之前转载过一篇爬虫相关的文章  打造

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值