spider

news2024/12/30 4:04:08

大家好 我是Yhen

今天给大家分享一下
如何爬取卡塔尔世界杯球员榜
在这里插入图片描述

数据来源:百度体育
https://tiyu.baidu.com/match/%E4%B8%96%E7%95%8C%E6%9D%AF/tab/%E7%90%83%E5%91%98%E6%A6%9C/current/0

文章目录

    • 一.需求分析
    • 二.思路分析
    • 三.代码实战
    • 四.源码获取

一.需求分析

我们这次的目标是将所有榜单(射手榜、助攻榜…犯规)中的球员名 球队名/球员位置 以及榜单对应的数据爬取下来
在这里插入图片描述在这里插入图片描述

并保存到excel中去

二.思路分析

首先按下键盘的F12 打开浏览器检查工具

在这里插入图片描述

点击左上角的按钮 再点击到球员的名字处
在这里插入图片描述

我们可以看到射手榜中的球员名字的数据在页面中 id为球员榜0下的a标签下 class属性为info标签下的class属性为c-color-link c-line-clamp1的文本

同理
球队/队员位置的数据在 class属性为info标签下的class属性为c-color-gray c-line-clamp1的文本
(叠的BUFF有点多,新手看起来可能有点复杂…别急慢慢看,其实就是看每个展开的接口,然后找到对应的唯一的属性标识。不熟悉可以看看我其他的爬虫文章多多了解,练多了就好了~加油)
在代码中用Pyquery解析出来就好了
在这里插入图片描述

但是这只是第一个榜单,如何获取其他的榜单的数据呢?

接下来我们观察一下
我们点击不同的榜单 url会有怎么样的变化呢?
射手榜

助攻榜
点球榜

聪明的同学很快就发现了
每切换一次榜单,url最后的数字就会增加1

哇~ 你真厉害 这都被你发现了
点赞!

于是聪明的同学自信的敲起了代码
很快啊 一个获取球员信息的代码就写出来了
在这里插入图片描述

但当这位聪明的同学自信地运行时
却发生了意想不到的一幕
在这里插入图片描述

嗯嗯嗯?怎么就这么一点数据

他对比了一下原网页,现在似乎只爬取到了第一个榜单的数据
在这里插入图片描述

他百思不得其解
没理由啊,我已经根据榜单的数量做了一个循环处理了呀
为啥还是只得到第一个的数据呢?

困惑的他回到网页中
手动地将url中最后的数字从0改成1
在这里插入图片描述

按下回车

无语的一幕发生了
在这里插入图片描述

网页中显示的还是第一个榜单的内容…

怪不得
无效跳转了属于是
后来他又尝试改成其他的数字
在这里插入图片描述

最后发现无论改成多少,显示的都是第一个榜单的内容

他终于悟了
在这里改变上面的url并不能实现页面的跳转

那么到底如何获取其他榜单的内容呢?

回到网页中来
在这里插入图片描述

有没有一种可能
其他榜单的数据其实早就在页面中了呢?

仔细观察网页元素
发现榜单是由不同的div块组成的
每个榜单对应不同id的div块

在这里插入图片描述

再仔细看看发现 每个榜单数据的获取
除了id不同,其他子元素都是相同的

在这里插入图片描述

那么在没有指定id的情况下,获取的范围是更大的
在页面完整的情况下,常理来说应该能获取所有id下的数据才对
那么为什么只能获取到第一个榜单的数据?

Emmm…页面完整的话…
嗯?难道刚刚爬取下来的页面元素不完整?

于是我打印了刚刚获取到的源码
在这里插入图片描述

按下ctrl + F 搜索发现可以搜索到 球员榜0的数据

在这里插入图片描述

但当我搜索 球员榜1 时 就找不到对应的数据了
在这里插入图片描述

真相了
爬取下来的根本就没有我们想要的内容
那么还谈何解析?

为什么会这样呢?
因为我是用requessts发送请求并获取页面数据的

但是因为requests获取的是静态页面返回的数据

很多页面的内容并没有加载完全或者需要我们执行下滑操作才能加载

所有其他榜单的内容就无法获取到了

对于这种情况 我们可以使用selenium来爬取
在这里插入图片描述
在这里插入图片描述

现在就可以成功获取到其他榜单的内容了
有了数据
其他就是小菜一碟了

三.代码实战

首先导包

import requests
from pyquery import PyQuery as pq
from openpyxl import Workbook, load_workbook
from openpyxl.styles import Font, Alignment
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time
from pyquery import PyQuery as pq

Tip:需要下载浏览器对应的webdriver驱动才能使用selenium
各个浏览器下载地址参考:
https://www.jianshu.com/p/6185f07f46d4

使用selenium 爬取页面内容
在这里插入图片描述
运行结果
在这里插入图片描述

解析出数据(详细方法看上面思路分析)

在这里插入图片描述
运行结果
在这里插入图片描述


写入到excel中


在这里插入图片描述
在这里插入图片描述


我们来看看最终的效果吧~
在这里插入图片描述

射手榜

和网页上的对比一下
在这里插入图片描述

除了同成绩的展示顺序不一样(网站随机排序,刷新几次都不一样)
其他都是一样的

在这里插入图片描述

在这里插入图片描述

助攻榜

在这里插入图片描述
在这里插入图片描述

犯规榜

至此
我们已经成功爬取下了世界杯的榜单

四.源码获取

在这里插入图片描述

源码中含有详细注释

打开微信搜一搜 “Yhen杂文铺”
后台回复关键词 世界杯爬虫获取源码哦

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/31900.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

强强联合 加速科技“牵手”清华大学达成深度战略合作

近日,清华大学集成电路学院成功采购了加速科技ST2500系列高性能数模混合测试机(浙江省首台套装备)。加速科技“牵手”清华大学,共同推进集成电路自主技术的创新升级,就集成电路学科教学科研、人才培养展开深度合作。 清…

Java Spring后处理器

Java Spring后处理器 在Spring框架中,交给Spring管理的类信息都会被Spring底层自动加载被封装成对应的BeanDefinition对象存储在beanDefinitionMap的Map集合中去,那么除了直接将类信息配置的方式外,还有别的方式可以对想要交给Spring管理的类…

matlab在管理学中的应用简matlab基础【二】

1、MATLAB语言概述 1.1 MATLAB语言的发展 matlab语言是由美国的Clever Moler博士于1980年开发的 MATLAB Matrix Laboratory 它将一个优秀软件的易用性与可靠性、通用性与专业性 、一般目的的应用与高深的科学技术应用有机的结合 MATLAB是一种直译式的高级语言,比…

【安装Ubuntu18.04遇到的问题】未找到WIFI适配器

大家好,我是小政。好久没有更新文章,近期开始陆续分享一些研究生阶段正在学习的知识和遇到的一些问题。 联想拯救者Y9000P关于安装Ubuntu未找到WIFI适配器的解决方法1.Ubuntu18.042.网卡信息3.解决方法(1)用手机USB连接电脑提供网…

如何判断对象是否该被回收(引用计数法、可达性分析算法)

👨‍💻个人主页: 才疏学浅的木子 🙇‍♂️ 本人也在学习阶段如若发现问题,请告知非常感谢 🙇‍♂️ 📒 本文来自专栏: JVM 🌈 算法类型:Hot100题 &#x1f30…

计算机的应用领域

文章目录计算机的应用领域1、商业2、银行业3、保险行业4、教育行业5、市场营销6、卫生保健7、工程设计8、军事9、通讯10、政府计算机的应用领域 本节,我将带领您了解计算机在各个领域的应用。 1、商业 计算机的功能丰富,极高的计算能力,计…

sqli-labs/Less-56

这一关的欢迎界面提示我们还是以id作为注入点 我们仍然有14次尝试机会 首先我们还是先来判断一下是否属于数字型注入 输入如下 id1 and 12 回显如下 正确回显 属于字符型 接着输入1 查看回显 这个回显说明两件事情 一个是我们后面不能使用报错注入进行注入了 一个是我们这个…

Elasticsearch:使用反向地理编码在地图上显示自定义区域统计数据

在实际的许多应用中,我们可能并不一定按照行政区来进行划分区域,比如我们常说江浙一代,我们可以理解江苏和浙江这两个省合在一起,而不是把它们分开。我们有时也说长江三角区,它可能是跨几个省市的一个区域,…

每隔一段时间自动敲键盘的的vbs脚本

1. 上代码 set wscreateobject("wscript.shell") do ws.sendkeys "{TAB}" WScript.Sleep Int(6 *Rnd1)*1000 loop2. 代码解释 每隔1~6秒,按一次TAB键 2.1 循环执行操作代码 do ....操作..... loop2.2 按下Tab键 ws.sendkeys "{TAB}" 即…

HTML5期末大作业商城网页设计与实:(手表 3页)HTML+CSS

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材,DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | 在线商城购物 | 水果商城 | 商城系统建设 | 多平台移动商城 | H5微商城购物商城项目 | HTML期末大学生网页设计作业 HTML:结构 CSS&#…

python中字典的循环遍历的方式

python开发中经常会用到对于字典、列表等数据的循环遍历,但是python中对于字典的遍历对于很多初学者来讲非常陌生,今天就来讲一下python中字典的循环遍历的两种方式。 注意: python2和python3中,下面两种方法都是通用的。 1、只…

两种数据提取框架的比较(scrapy和webmagic)

背景: 最近北京疫情有点严重,状态是居家办公,又是买菜做饭又是核酸检测心情是无比的烦躁还总是会议,无需发言的会议就边听边写写csdn记录一下。这几天在用Java写一个数据抓取的程序,用于数据分析等等。第一是因为原项目…

十二、虚拟 DOM 和 render() 函数(2)

本章概要 用普通 JavaScript 代替模板功能 v-if 和 v-forv-modelv-on事件和按键修饰符插槽 JSX实例:帖子列表 12.3 用普通 JavaScript 代替模板功能 原先在模板中可以使用的一些功能在 render() 函数中没有再提供,需要自己编写 JavaScript 代码来实现…

docker-Cgroups的资源限制

一、Cgroup的介绍 cgroups,是一个非常强大的linux内核工具,他不仅可以限制被namespace 隔离起来的资源,还可以 为资源设置权重、计算使用量、操控进程启停等等。所以cgroups (Control groups) 实现了对资源的配额和度量。 cpu时间片的概念 …

atoi函数的介绍和模拟实现

今天我来介绍atoi函数和模拟实现atoi函数。 目录atoi和与其功能相似的函数的介绍atoi函数的模拟实现atoi和与其功能相似的函数的介绍 atoi函数是一个将字符串转换为整数值的函数。 由msdn查询可以得知,atoi函数的返回类型是int类型,参数类型是const ch…

用于不同功率的模块式TEC半导体致冷器超高精度温度控制装置

摘要:针对目前TEC半导体制冷器温控装置对高精度、模块化、可编程和远程控制等方面的技术需求,本文提出了一种高性价比的解决方案。解决方案的具体内容是采用模块式结构,以24位AD和16位DA超高精度PID控制器作为基础单元,采用分立模…

不调参,免训练,VisionBank AI OCR新功能升级上线!

应用背景 OCR字符识别,是指对部件或产品上刻印的字符进行确认、辨别、判定的检测识别。此项技术目前已广泛应用于工业自动化生产的产品质量管理环节当中,企业通过为机器视觉检测设备安装OCR系统,快速完成对产品生产日期、保质期、生产批号、…

红色荧光TAMRA alkyne 5-isomer,945928-17-6,5四甲基罗丹明-炔基

TAMRA alkyne,5-isomer反应原理: 红色荧光四甲基罗丹明炔烃可通过铜催化的点击反应与叠氮化合物反应。点击化学的代表反应为铜催化的叠氮-炔基Husigen环加成反应(Copper-Catalyzed Azide–Alkyne Cycloaddition)。点击化学的概念对化学合成领…

线性二分类——机器学习

目录 一、算法思想 二、算法原理 三、算法分析 四、源程序代码 五、运行结果及分析 六、总结 一、算法思想 (1)二分类:表示分类任务有两个类别,比如我们想识别图片中是不是狗,也就是说,训练一个分类器,…

如何使用云服务器搭配宝塔面板搭建Z-blog个人博客系统

之前写过使用过WordPress和Typecho搭建个人博客网站的方法,这篇文章将使用Z-blog搭建个人博客系统,Z-blog相当于WordPress而言,更加小巧,但是依然有着强大的功能,以及丰富的主题和插件,因此也值得很多用户选…