Python爬虫实践(六):反爬虫简介

论坛 期权论坛 期权     
数据PM的自我修养   2019-7-14 05:28   2597   0
        看过上期内容《Python爬虫实践(五):抓包分析》的朋友应该还会记得,我们的抓包对象是手机APP,而实际上大多数PC网页也采用了同样的逻辑——即通过接口传递数据,而这就在一定程度上隔绝了一部分网络爬虫。

        以雪球网为例,当我们进入任何一支股票主页时,通过修改其股价的统计区间,是可以获得股票自上市以来的每一个交易日数据的。




        然而,如果我们用《Python爬虫实践(一):网页分析》介绍的方法去查找目标内容,就会发现这些数据在网页源代码中并不存在。试想一下,如果一次性就把全部非初始默认的内容发送给你,那网页访问起来是不是就会变慢呢。所以,通过《Python爬虫实践(五):抓包分析》介绍的方法,或者浏览器自带的Network检查工具,我们就能找到相关数据的调用接口。有兴趣的朋友,可以在浏览器中打开如下链接查看(https://stock.xueqiu.com/v5/stock/chart/kline.json?symbol=SH600309&begin=978624000000&end=1561542382033&period=day&type=before&indicator=kline)。




        下面说说第二个CASE。



        
        如图,红色的几个价格数据是我们希望爬取的信息。按正常逻辑,右键、右键,居然没反应?是的,这是因为网站采用了一定的机制禁止了你的右键。基本上到这儿就能预料到,这个网站大概率不好爬。当然,我们还是再看看网页信息。通过在网址前面加入view-source:来访问,或者通过谷歌浏览器的菜单进入网页检查,我们会发现网页中的价格,比如“车主购车全款均价”在网页中并不存在。



        
        这又是为什么呢?仔细查看会发现,原本应该放数字的位置被替换为了类似":after"、":before"的内容,这个在CSS中被称作伪元素,主要是用来向某些选择器设置特殊效果。不过和上面不同,这类问题到目前为止没有找到有效的解决方法,还有待研究。

        除此之外,在查看一些网页元素的时候,你还会发现类似下图的元素集(矢量图)。



        
        网页开发者在设计网页时,会把需要的元素都排列好组合成一张大图,然后通过在对应地方截图引用实现最终效果。按这个思路,一些数字信息,也可以采用这种方法拼接实现。而要破解这类反爬虫机制,想想也是极难的。诸如其它的反爬虫机制,比如限制IP、要求登录或者输入验证码,由于研究不深,这里就不再赘述。

        自此,整个Python爬虫系列的内容就算告一段落了。回顾之前的文章,内容有详有略,当然自己的写作能力以及对问题的提炼也有待提升。如果有疏漏或者描述错误的地方,还请批评指正。谢谢!
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:10
帖子:2
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP