爬取篮球赛果开奖数据分析,如下所示:

一、网站分析

这个网站的数据不是静态的,是动态加载的(选取相应日期,点击”开始查询“后,数据从服务端加载到浏览器)

看一下网页的低端,发现数据并不是一次性加载的,而是通过分页的形式完成

进一步研究还发现,每个月份的分页数并不是一致的,最多有8页

对日期的输入框进行分析,发现它是可以直接通过键盘输入日期的

二:确定爬取方案

对于这种动态的网页,直接通过request库不太好爬取,而模拟人类操作浏览器的selenium对这种场景具有天然优势,所以我采用后者。对网页元素的定位则使用xpath。

大概的思路就是,先构建每月的开始月份、结束月份

date = [("2021-01-01", "2021-01-31"), ("2021-02-01", "2021-02-28"), ("2021-03-01", "2021-03-31"),("2021-04-01", "2021-04-30"), ("2021-05-01", "2021-05-31"), ("2021-06-01", "2021-06-30"),("2021-07-01", "2021-07-31"),("2021-08-01", "2021-08-30"), ("2021-09-01", "2021-09-31"), ("2021-10-01", "2021-10-30"),("2021-11-01", "2021-11-31"),("2021-12-01", "2021-12-24")]

再用这些数据分别输入到开始框和结束框内

点击查询

点击分页

特别注意到分页的xpath路径是有规律的,因而我们可以构造xpath路径,方便接下来的爬取

Xpath = [f'//*[@id="matchList"]/div/div/ul/li[{i}]' for i in range(2, 10)]

爬取内容

三:编码实现

from selenium.webdriver import Edge
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
import timedriver = Edge(executable_path="C:/WebDriver/bin/msedgedriver.exe")
date = [("2021-01-01", "2021-01-31"), ("2021-02-01", "2021-02-28"), ("2021-03-01", "2021-03-31"),("2021-04-01", "2021-04-30"), ("2021-05-01", "2021-05-31"), ("2021-06-01", "2021-06-30"),("2021-07-01", "2021-07-31"),("2021-08-01", "2021-08-30"), ("2021-09-01", "2021-09-31"), ("2021-10-01", "2021-10-30"),("2021-11-01", "2021-11-31"),("2021-12-01", "2021-12-24")]Xpath = [f'//*[@id="matchList"]/div/div/ul/li[{i}]' for i in range(2, 10)]# 判断xpath存不存在的函数
def NodeExists(xpath):try:driver.find_element_by_xpath(xpath)return Trueexcept:return Falsedef crawler():for item in date:# 打开网页driver.get("https://www.sporttery.cn/jc/lqsgkj/")# 等待加载WebDriverWait(driver, 10).until(lambda d: "篮球赛果开奖" in d.title)# 等待一秒后 先清空再输入开始日期time.sleep(1)driver.find_element(By.XPATH, '//*[@id="start_date"]').clear()driver.find_element(By.XPATH, '//*[@id="start_date"]').send_keys(item[0])# 再等一秒 先清空再输入结束日期time.sleep(1)driver.find_element(By.XPATH, '//*[@id="end_date"]').clear()driver.find_element(By.XPATH, '//*[@id="end_date"]').send_keys(item[1])# 点击查询driver.find_element(By.XPATH, '//*[@id="headerTr"]/div[1]/div[1]/div/a').click()print(f"开始爬取{item[0]}")with open(f"{item[0]}.csv", "w", encoding='ANSI') as fin:# 点击1-8页内容page = 1for this in Xpath:time.sleep(1)if NodeExists(this):driver.find_element(By.XPATH, this).click()else:print(f"没有{this}这个xpath")breaktime.sleep(1)content = driver.find_element(By.XPATH, '//*[@id="matchList"]/table').textfin.write("\n" + content)print(f"完成第{page}页的爬取,此时的xpath是:{this}")page += 1print(f"结束爬取{item[0]}")if __name__ == "__main__":crawler()

结尾:

大家喜欢的记得点点赞,需要完整的项目源码的可以私信我哟!点击这里也行哦!

Python爬取篮球比赛数据分析相关推荐

  1. python猫眼电影分析_用Python 爬取猫眼电影数据分析《无名之辈》

    前言 作者: 罗昭成 PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 http://note.youdao.com/noteshare?id=3054cce4add8a909e7 ...

  2. python爬取足球比赛信息(一)

    爬取可购买的比赛信息 import datetime import json import time import requests import pymysql from datetime impo ...

  3. Python 爬取 B 站数据分析,宋智孝李光洙谁最受中国粉丝喜爱

    作者 | 左伊雅 责编 | 胡巍巍 <Running Man>是韩国SBS电视台在<星期天真好>单元推出的户外竞技真人秀节目. 节目致力于打造一个不同于Real variety ...

  4. Python爬取某网站数据分析报告,不满十八岁禁止观看

    声明:此文并不是标题党,如果你不满18岁,请马上关闭,在父母陪同下观看也不行. 本文的数据抓取自国内最大的亚文化视频社区网站(不,不是 B 站),其中用户出于各种目的会在发帖的标题中加入城市名称,于是 ...

  5. 使用python爬取足球比赛数据,关于足球预测策略模型,这是我见过唯一三年都盈利的

    市场上有很多基于程序自动化的足球预测模型,我本人也不断摸索,自学python,最终实现了程序预测的自动化,并且验证了很多策略,几乎所有的模型都是阶段性表现很不错,但是长期总体下来,都达不到预期,很多时 ...

  6. python爬取岗位数据并分析_Python年薪最高有50w|探秘全国近1600个Python岗位数据分析...

    原创 xinxin 菜鸟学Python 阅读本文大概需要3分钟 Python学了这么久,相信很多小伙伴都想知道钱途如何,全国各大城市招聘Python的岗位有多少,都招哪些职位,年薪如何等等,我爬取了拉 ...

  7. python实战(一)Python爬取猫眼评分排行前100电影及简单数据分析可视化python实战(一)Python爬取猫眼排行前一百电影及简单数据分析可视化

    python实战(一)Python爬取猫眼排行前一百电影及简单数据分析可视化 一.抓取数据 需要的库 request库 响应http请求 json库 将文本保存成json形式 pyquery 类似JQ ...

  8. python实战(一)Python爬取猫眼评分排行前100电影及简单数据分析可视化

    python实战(一)Python爬取猫眼排行前一百电影及简单数据分析可视化 一.抓取数据 需要的库 request库 响应http请求 json库 将文本保存成json形式 pyquery 类似JQ ...

  9. python爬取数据分析淘宝商品_python爬取并分析淘宝商品信息

    python爬取并分析淘宝商品信息 Tip:本文仅供学习与交流,切勿用于非法用途!!! 背景介绍 有个同学问我:"XXX,有没有办法搜集一下淘宝的商品信息啊,我想要做个统计".于是 ...

最新文章

  1. 简单图文配置golang+vscode【win10/centos7+golang helloworld+解决install failed等情况】
  2. 对标以太坊的EOS再火,也拼不过InterValue的区块链4.0
  3. Exchange 2010 OAB下载问题排错error 0x80200049
  4. 区块链数字广告项目-【DadxChain】
  5. wxWidgets:wxScrollWinEvent类用法
  6. python函数调用键盘热键_Tkinter对键盘和鼠标事件的处理
  7. 编译VTK的MFC库
  8. android 生成泛型对象,java android解析多层含有泛型对象的json数据获取不到泛型类型解析失败解决办法...
  9. QQ 调查用户是否希望推 「已读」功能,如何评价「已读」功能?QQ是否要加这个功能?...
  10. 高中全国计算机信息学竞赛,高中信息学奥赛考什么
  11. 第十一章 软件能力成熟度模型
  12. 小程序性能和体验优化方法
  13. 6大智慧电厂关键技术,三维可视化仅是基础
  14. JetBrain学生认证续费步骤
  15. Python查询快递订单信息
  16. 为什么amd显卡便宜却买的人少_为什么不推荐人选择AMD?
  17. AI还原乾隆后妃样貌,延禧攻略众生相。
  18. 怎么洗掉衣服上的水粉颜料、丙烯颜料、水彩颜料、油画颜料
  19. 白银时代房地产如何赚钱?——旅游地产怎样玩?
  20. 怎么办理软件产品登记测试报告,软件产品登记有什么作用?

热门文章

  1. 手机管理计算机文件,win10系统电脑管理手机文件的方法
  2. (可下载)《2020年网络安全威胁信息研究报告(2021年)》上新
  3. Mac款origin来了!还不来看看!
  4. 软件测试——10款目前最热门的测试工具,总有一款适合你
  5. python调用wmts服务_OpenLayers 加载山东天地图(WMTS)
  6. 本周一朝鲜公共互联网连接一度中
  7. 【转载】东方智慧和西方智慧的比较
  8. unsupported marjor.minor version 52.0
  9. linux扩展分区xfs
  10. KiTTY及cnKiTTY中新的可用命令行选项的简单注释