gpt4 book ai didi

Python - Beautifulsoup - 只返回一个结果

转载 作者:行者123 更新时间:2023-12-01 23:54:43 27 4
gpt4 key购买 nike

我正在尝试从下面的链接中抓取运动日程数据

https://sport-tv-guide.live/live/darts

我在下面使用下面的代码

import requests
from bs4 import BeautifulSoup

def makesoup(url):
page=requests.get(url)
return BeautifulSoup(page.text,"lxml")


def matchscrape(g_data):


for match in g_data:
datetimes = match.find('div', class_='main time col-sm-2 hidden-xs').text.strip()
print("DateTimes; ", datetimes)
print('-' *80)

def matches():
soup=makesoup(url = "https://sport-tv-guide.live/live/darts")
matchscrape(g_data = soup.findAll("div", {"class": "listData"}))

我遇到的问题是只返回第一个结果(见下文)

Error output

而应该输出两个值(见下文)

Expected

我打印了从运行中收到的输出

def matches():
soup=makesoup(url = "https://sport-tv-guide.live/live/darts")
matchscrape(g_data = soup.findAll("div", {"class": "listData"}))

并且由于某种原因似乎只有第一个结果在 HTML 中返回(见下文),这将导致为什么只返回第一个结果,因为这是可以从 HTML 中找到的唯一结果已收到。我不确定的是为什么 Beautifulsoup 没有输出整个 HTML,所以所有的结果都可以输出?

errorhtml

感谢任何可以协助或解决此问题的人。

最佳答案

您的matchscrape 函数有误。而不是返回第一项的 match.find 函数,您应该使用与 matches 函数相同的方式 match.findAll 函数。然后像下面的示例一样遍历找到的日期时间。

def matchscrape(g_data):
for match in g_data:
datetimes = match.findAll('div', class_='main time col-sm-2 hidden-xs')
for datetime in datetimes:
print("DateTimes; ", datetime.text.strip())
print('-' * 80)

第二件事是解析 html 页面。该页面是用 html 编写的,因此您可能应该使用 BeautifulSoup(page.text, 'html.parser') 而不是 lxml

关于Python - Beautifulsoup - 只返回一个结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62969858/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com