我正在尝试使用xpath解析以下html来检索lsTime和lsTmames,以显示为:
21:30
Benfica
Sporting
请注意,html有更多数据,因此我将使用循环。
HTML:
<li class="">
<dl class="lsTime"><dd>21:30</dd></dl>
<dl class="lsTNames">
<dd>Benfica</dd>
<dd>Sporting CP</dd>
</dl>
<dl class="lsScore">
<dd></dd>
<dd></dd>
</dl>
</li>
我的代码:
with Display():
browser = webdriver.Firefox()
try:
browser.get(url_link_mob)
time.sleep(2)
for litag in browser.find_elements_by_xpath('//dl[@class="lsTime"]'):
time= litag.text
print(time)
for litag2 in browser.find_elements_by_xpath('//dl[@class="lsTNames"]'):
clubs= litag2.text
print(clubs)
finally:
browser.quit()
如果我使用上面的代码,数据将不会按我的要求显示,因为所有游戏的时间将与俱乐部分开。在我的例子中,我怎么能首先解析每个游戏的时间和俱乐部? 谢谢。
答案 0 :(得分:0)
我打算用伪代码回复。 TUGA!
//cicle all dl elements
for litag in browser.find_elements_by_xpath('//dl"]'):
//assuming the dl have allways the same order,first time then clubs
//first print the time and then the name
if(litag.get_attribute(class)=="lsTime")
time= litag.text
print(time)
if(litag.get_attribute(class)=="lsTNames"):
clubs= litag2.text
print(clubs)
只需检查从您正在使用的语言中获取属性和selenium元素的函数是什么。
答案 1 :(得分:0)
解决方案:
from pyvirtualdisplay import Display
from selenium import webdriver
import time
with Display():
browser = webdriver.Firefox()
try:
browser.get(url_link_mob)
time.sleep(2)
for litag in browser.find_elements_by_xpath('//dl'):
if litag.get_attribute("class") == "lsTime":
match_time = litag.text
print(match_time)
if litag.get_attribute("class") == "lsTNames":
teams = litag.text
print(teams)
finally:
browser.quit()