首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

爬取whoscored足球网站遇到的问题

首先献上网址https://www.whoscored.com/Statistics,网站在关于足球信息方面的数据还是挺多的,全球各大联赛,无论是球队的还是球员的数据都有。

主要想获取的是下图的5大联赛球员数据,进入页面后就知道有异步加载的部分,那么就来看看具体的信息,请见下图,每个球员名字也是一个链接,进去后还能获得更详细的球员信息,那么要做的就是在每一页进入每一个球员链接里面爬取。

第一页的request url:https://www.whoscored.com/StatisticsFeed/1/GetPlayerStatistics?category=summary&subcategory=all&statsAccumulationType=0&isCurrent=true&playerId=&teamIds=&matchId=&stageId=&tournamentOptions=2,3,4,5,22&sortBy=Rating&sortAscending=&age=&ageComparisonType=&appearances=&appearancesComparisonType=&field=Overall&nationality=&positionOptions=&timeOfTheGameEnd=&timeOfTheGameStart=&isMinApp=true&page=&includeZeroValues=&numberOfPlayersToPick=10

这个链接最重要的参数就是page,修改page就能得到不同页面的数据,在浏览器输入该request url得到的信息:

球员页链接:https://www.whoscored.com/Players/50835/Show/Neymar

所以要构造所有球员的链接只需要知道球员ID和球员名字就好了,这两个信息可以从上图获得,然后就是抓包分析了,可以开干了!结果返回下图。。。

主要是这两个信息:,Request unsuccessful.Incapsula incident ID:……. 就是被识别出来是爬虫了,不论怎么换请求头还是换ip都是这样…

那试试能不能用selenium,如果是请求页面源码是可以显示出一两页的,再往后几页就不行了,那再试试模拟点击?情况也差不多

然后在Github查到一个相关内容:

https://github.com/ziplokk1/incapsula-cracker-py3

上面有介绍这种incapsula反爬机制,并提供了解决办法(尝试过,也解决不了)

大概就是这种机制能识别出你是否使用了selenium,phantomJS等等,每次进入页面都会生成一个对用户测试结果的cookie,然后请求会带有这个测试cookie再返回其他的cookie以获得访问网站的权限,但即使授权访问了,请求太多也会触发incapsula这种机制

除了whoscored这个网站,还有以下网站同样有这种机制:

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180211G0OVGW00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券