【发布时间】:2017-08-31 22:17:23
【问题描述】:
我想遍历一个 webelements 列表并从每个元素返回文本,但我只从第一个 <h2>element 获取文本,而不是从其他 <li> 标签内的其余元素获取文本,然后代码存在那个循环
这是我要从中提取文本的部分 Html 代码:
<div class="KambiBC-event-page-component__column KambiBC-event-page-component__column--1">
<ul class="KambiBC-list-view__column">
<li class="KambiBC-bet-offer-category KambiBC-collapsible-container KambiBC-expanded KambiBC-bet-offer-category--hidden KambiBC-bet-offer-category--fade-in">
<header class="KambiBC-bet-offer-category__header" data-touch-feedback="true">
<h2 class="KambiBC-bet-offer-category__title js-bet-offer-category-title">Piete selectate</h2>
</header>
</li>
<li class="KambiBC-bet-offer-category KambiBC-collapsible-container KambiBC-expanded KambiBC-bet-offer-category--hidden KambiBC-bet-offer-category--fade-in">
<header class="KambiBC-bet-offer-category__header" data-touch-feedback="true">
<h2 class="KambiBC-bet-offer-category__title js-bet-offer-category-title">Another text</h2>
</header>
</li>
<li class="KambiBC-bet-offer-category KambiBC-collapsible-container KambiBC-bet-offer-category--hidden KambiBC-bet-offer-category--fade-in">
<header class="KambiBC-bet-offer-category__header" data-touch-feedback="true">
<h2 class="KambiBC-bet-offer-category__title js-bet-offer-category-title">Different text</h2>
</header>
</li>
<li class="KambiBC-bet-offer-category KambiBC-collapsible-container KambiBC-bet-offer-category--hidden KambiBC-bet-offer-category--fade-in">
<header class="KambiBC-bet-offer-category__header" data-touch-feedback="true">
<h2 class="KambiBC-bet-offer-category__title js-bet-offer-category-title">Yet another text</h2>
</header>
</li>
</ul>
</div>
这是 Python 代码:
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Edge("D:\pariuri\python\MicrosoftWebDriver.exe")
driver.implicitly_wait(5)
driver.get("https://www.unibet.ro/betting#filter/football")
try:
element_present = EC.presence_of_element_located((By.CLASS_NAME, 'KambiBC-event-result__score-list'))
WebDriverWait(driver, 4).until(element_present)
except TimeoutException:
print ('Timed out waiting for page to load')
event = driver.find_elements_by_class_name('KambiBC-event-item KambiBC-event-item--type-match')
for items in event:
link = items.find_element_by_class_name('KambiBC-event-item__link')
scoruri = items.find_element_by_class_name('KambiBC-event-item__score-container')
scor1 = scoruri.find_element_by_xpath(".//li[@class='KambiBC-event-result__match']/span[1]")
scor2 = scoruri.find_element_by_xpath(".//li[@class='KambiBC-event-result__match']/span[2]")
print (scor1.text)
print (scor2.text)
if scor1.text == '0' and scor2.text == '0':
link.click()
time.sleep(3)
PlajePariuri = driver.find_elements_by_xpath("//ul[@class='KambiBC-list-view__column']")
for items in PlajePariuri:
NumePlaje = items.find_element_by_xpath("//li/header/h2")
print (NumePlaje.text)
【问题讨论】:
-
根据提供的 HTML,我在
li标记中看不到任何此类text。我错过了什么吗? -
@DebanjanB 看看
<h2>标签,那些有那个类名 -
您提供的 HTML 仅包含一个您可以检索的
<h2>标记。除非您提供更多<h2>标签,否则很难获得动态的xpath -
@DebanjanB 每个
li标记内部都有相同的header和h2元素,并且都具有第一个具有相同的类名,但具有不同的文本 -
@Rius2 html 代码不正确。缺少许多结束标记,并且似乎有许多嵌套列表,或者它们也没有正确关闭。除此之外,您的 Python 代码引用了根本没有出现在 HTML sn-p 中的属性。请提供与您需要帮助的 Python 代码相对应的有效 HTML sn-p。