我正在使用相同的代码来提取这个联盟的匹配结果,它可以在所有页面上运行,除了这个组3(下面的两个示例链接).

Group 2 - working

Group 3 - not working

该代码查找所有包含soup.find_all("table", class_="table-sm")的表,并根据从表4开始的页面上的匹配数量返回可变数量的表,我用它来获取结果.

当相同的代码应用于组3时,它只返回2:第二个代码包含页面头部以下的所有内容.

import requests
from bs4 import BeautifulSoup

url_gr_2 = 'https://rfetm.es/resultados/2022-2023/view.php?liga=Mg==&grupo=2&subgrupo=S&jornada=1&sexo=M'
url_gr_3 = 'https://rfetm.es/resultados/2022-2023/view.php?liga=Mg==&grupo=3&subgrupo=S&jornada=1&sexo=M'

req = requests.get(url_gr_2)
soup = BeautifulSoup(req, features="lxml")
data = soup.find_all("table", class_="table-sm")
print(len(data))
# returns 9

req = requests.get(url_gr_3)
soup = BeautifulSoup(req, features="lxml")
data = soup.find_all("table", class_="table-sm")
print(len(data))
# returns 2

我使用Chrome Select 器扩展和控制台来测试Group 3的页面 struct ,它在页面上返回8个元素,但不是在BS4中.

在Group 3的情况下,我还试图迭代data[1]的HTML元素,但BS4不返回任何元素.

我试着比较了两个页面的HTML值,但没有发现任何有意义的差异.

我所期望的是能够提取出这个联赛的结果,就像我在这个页面上对所有其他联赛所做的那样.

推荐答案

使用html.parserhtml5lib作为此页面的解析器.lxml更严格,它不会像浏览器那样解析此页面.

from bs4 import BeautifulSoup

url = 'https://rfetm.es/resultados/2022-2023/view.php?liga=Mg==&grupo=3&subgrupo=S&jornada=1&sexo=M'

soup = BeautifulSoup(requests.get(url).content, 'html.parser')  # <-- use `html.parser`

data = soup.find_all("table", class_="table-sm")
print(len(data))

打印:

8

Python相关问答推荐

具有多个选项的计数_匹配

我在使用fill_between()将最大和最小带应用到我的图表中时遇到问题

抓取rotowire MLB球员新闻并使用Python形成表格

如何创建一个缓冲区周围的一行与manim?

优化器的运行顺序影响PyTorch中的预测

组/群集按字符串中的子字符串或子字符串中的字符串轮询数据框

driver. find_element无法通过class_name找到元素'""

如何使Matplotlib标题以图形为中心,而图例框则以图形为中心

如何使regex代码只适用于空的目标单元格

导入错误:无法导入名称';操作';

OpenCV轮廓.很难找到给定图像的所需轮廓

用SymPy在Python中求解指数函数

BeautifulSoup:超过24个字符(从a到z)的迭代失败:降低了首次深入了解数据集的复杂性:

如何将泛型类类型与函数返回类型结合使用?

如何编辑此代码,使其从多个EXCEL文件的特定工作表中提取数据以显示在单独的文件中

为什么我只用exec()函数运行了一次文件,而Python却运行了两次?

Matplotlib中的曲线箭头样式

与同步和异步客户端兼容的Python函数

在MongoDB文档中仅返回数组字段

普洛特利express 发布的人口普查数据失败