python爬虫之使用BeautifulSoup模块抓取500彩票网竞彩足球赛果及赔率

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

前言

竞彩足球是目前比较受欢迎的一种体彩彩种,玩法较为灵活多样,赔率可观,今天就来记录一下如何抓取竞彩足球的开奖信息和赔率。

分析思路

我使用的网站为500彩票,我们以2021年6月9日的比赛结果为例,该天的比赛结果地址为https://trade.500.com/jczq/?date=2021-06-09,打开网页右键对第一场比赛结果进行审查元素操作,发现比赛的信息和结果储存在tbody下的tr class="bet-tb-tr bet-tb-end"中,那接下来我们对每一场比赛的tr进行分析。在这里插入图片描述
打开第一个tr我们发现所有的内容均储存在class名称不同的td当中,比如开赛时间就储存在td class="td td-endtime"当中,而赔率则储存在td class="td td-betbtn"下的p标签下的span标签当中,我们所需的数据的储存结构和位置都弄清楚以后下一步就简单了。
我们就可以使用BeautifulSoup的find_all方法获取所有的tr标签下的td标签,然后可以根据td的索引和class的名称获取到对应标签的文本内容。赔率的话可以在储存赔率的td标签下获取获取span标签即可得到所有的赔率,其他的内容基本都是这个思路只是层数和标签名称不同而已,具体获取方式有很多种,大家可以灵活使用,这里就不一一列举了。
在这里插入图片描述

数据储存

数据的储存我使用的是pandas模块,获取的到数据首先临时储存在字典中,接着将字典转换为pandas的DataFrame数据类型,最后使用merge进行合并和储存为xlsx文件。
数据储存这个部分应该有更加高明和简便的方法,但是本人对于pandas模块还只是一个初学者,所以过程比较繁琐,欢迎各位指教!

代码

BeautifulSoup模块抓取竞彩足球代码:

#!user/bin/env python
#_*_ coding:utf-8 _*_
#_*_ author:taojinwen _*_
import requests,time
from bs4 import BeautifulSoup
import pandas as pd
url = 'https://trade.500.com/jczq/?date=2021-06-09'
header = {
"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36"
        }
respones = requests.get(url,headers = header)
content = respones.content.decode('gbk')
soup = BeautifulSoup(respones.text,'lxml')
trs = soup.find_all('tr',class_="bet-tb-tr")
index = []
#columns = ['让球','胜','平','负']
data = {'让球':'','胜':'','平':'','负':''}
title = {'编号':'','赛事':'','开赛时间':'','主队 VS 客队':'','百家平均':''}
serial_numbers = []
game_names = []
game_times = []
team_names = []
victory = []
flat = []
defeat = []
for tr in trs:
    tds = tr.find_all('td')
    #编号':'','赛事':'','开赛时间':'','主队 VS 客队
    #每次增加一个空值是为了后期方便合并
    serial_number = tds[0].text.strip('\n')
    serial_numbers.extend((serial_number,''))
    game_name = tds[1].text.strip('\n')
    game_names.extend((game_name,''))
    game_time = tds[2].text
    game_times.extend((game_time,''))
    team_name = tds[3].text.replace('\n','')
    team_names.extend((team_name,''))
    #让球
    p = tds[4].find_all('p')
    p1 = p[0].text
    p2 = p[1].text
    index.extend((p1,p2))
    #赔率
    span = tds[5].find_all('span')
    if len(span) == 6:
        #同时加载多个元素到列表
        victory.extend((span[0].text,span[3].text))
        flat.extend((span[1].text,span[4].text))
        defeat.extend((span[2].text,span[5].text))
    else:
        victory.extend(('未开售', span[0].text))
        flat.extend(('未开售', span[1].text))
        defeat.extend(('未开售', span[2].text))
data['让球'] = index
data['胜'] = victory
data['平'] = flat
data['负'] = defeat
title['编号'] = serial_numbers
title['赛事'] = game_names
title['开赛时间'] = game_times
title['主队 VS 客队'] = team_names
df1 = pd.DataFrame(data)
df2 = pd.DataFrame(title)
now = time.time()
ls = time.localtime(now)
time = str(ls.tm_mon)+'_'+str(ls.tm_mday)+'_'+str(ls.tm_hour)+'_'+str(ls.tm_min)+'_'+str(ls.tm_sec)
df = pd.merge(df2,df1,how="inner",left_index=True,right_index=True)
df.to_excel('table{}.xlsx'.format(time))

结果展示

最终在excel表里面看起来不是很美观,细节方面还需进行美化,凑合着先看一下吧!
在这里插入图片描述

结语

如果想抓取多天比赛结果的朋友,可以分析每天赛果url的变化规律,在外面增加一个循环逐天进行抓取!最后欢迎大家在评论区不吝赐教,谢谢!

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

,原代码开源,原生android+ios,所涉及彩种几十种,可自由匹配接口,源码开源:后端JAVA,前端源码,Android源码,IOS源码,数据库,Java爬虫采集,搭建教程等。 竞彩足球竞彩篮球,北京单场,排列3,排列5… 爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL可以通过链接分析、站点地图、搜索引擎等方式获取。 请求网页: 爬虫使用HTTP或其他协议向目标URL发起请求,获取网页的HTML内容。这通常通过HTTP请求库实现,如Python中的Requests库。 解析内容: 爬虫对获取的HTML进行解析,提取有用的信息。常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用的存储形式包括关系型数据库、NoSQL数据库、JSON文件等。 遵守规则: 为避免对网站造成过大负担或触发反爬虫机制,爬虫需要遵守网站的robots.txt协议,限制访问频率和深度,并模拟人类访问行为,如设置User-Agent。 反爬虫应对: 由于爬虫的存在,一些网站采取了反爬虫措施,如验证码、IP封锁等。爬虫工程师需要设计相应的策略来应对这些挑战。 爬虫在各个领域都有广泛的应用,包括搜索引擎索引、数据挖掘、价格监测、新闻聚合等。然而,使用爬虫需要遵守法律和伦理规范,尊重网站的使用政策,并确保对被访问网站的服务器负责。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值