如何在Selenium(Python)中排除类名?

0 投票
1 回答
45 浏览
提问于 2025-04-12 22:04

我正在尝试从一个博彩公司的网站上抓取数据,但我只需要非实时的赛事。非实时赛事的元素看起来像这样:<div class="card ng-star-inserted"。而实时赛事的元素则是这样:<div class="card card--live ng-star-inserted

我用来获取参赛队伍名称的代码是:

website = 'https://winline.ru/stavki/sport/futbol'
driver.get(website)

team1 = []
team2 = []

driver.implicitly_wait(3)
table_winline_1 = driver.find_elements(By.CLASS_NAME, "card.ng-star-inserted")

for match in table_winline_1:
    team1.append(match.find_element(By.XPATH, './div[1]/a/div/div[1]').text)
    team2.append(match.find_element(By.XPATH, './div[1]/a/div/div[2]').text)
print(team1)
print(team2)

这个代码给我返回了一个队伍的列表,但列表的开头是实时赛事的队伍。

我该如何排除掉div class="card card--live ng-star-inserted的内容呢?

我也尝试过使用xpath和css选择器来定位,但出于某种原因,它们返回的是空列表。

我的英语不是很好,如果我的表述有误,请见谅。

1 个回答

1

我觉得在XPath中使用not contains可以帮到你。

table_winline_1 = driver.find_elements(By.XPATH, '//div[contains(@class, "card ng-star-inserted") and not(contains(@class,"card--live))]')

上面的代码会列出页面上所有不包含“card--live”的元素。在第8行的driver.find_elements中,你是在寻找那些带有“card.ng-star-inserted”类的元素,使用这段代码,你会得到整个页面中有“card ng-star-inserted”类但没有“card--live”类的div元素。

撰写回答