我使用 Python Selenium
来解析一些 live data
(Bets) ,我使用 While loop
这是我代码中的一些逻辑
def parse():
while True:
x = driver.find_element_by_xpath('//*[@id="bets-history"]/li[0]').text
print(x)
此代码有效但输出为
1.54x
1.54x
1.54x
1.54x
1.54x
1.54x
1.54x
1.54x
1.54x
1.54x
1.54x
1.54x
1.54x
1.54x
1.54x
1.54x
1.54x
1.54x
1.54x
13.5x
13.5x
13.5x
13.5x
13.5x
13.5x
13.5x
13.5x
13.5x
13.5x
13.5x
13.5x
只打印一张照片的最佳方法是什么?例如像这样
1.54x
13.5x
答案 0 :(得分:2)
您可以将第二个变量 (y
) 分配给原始变量 (x
),然后将新值分配给 x
。然后,在 if 语句中检查它们是否不相等 (!=
)。
代码:
def parse():
x = ''
while True:
y = x
x = driver.find_element_by_xpath('//*[@id="bets-history"]/li[0]').text
if y != x:
print(x)
答案 1 :(得分:1)
data = ['1.54x','1.54x','1.54x','1.54x','1.54x','1.54x','1.54x','1.54x','13.5x','13.5x','13.5x','13.5x','13.5x','13.5x','13.5x','13.5x']
previous_value = ''
for value in data:
if value != previous_value:
print(value)
previous_value = value
答案 2 :(得分:1)
由于您只希望每个值打印一次,因此您可以定义一个列表 xs
。
对于每个定义的 x
,如果 x
的值已经在 xs
列表中,不要打印或附加 x
的值到 {{ 1}};否则,打印 xs
的值并将 x
的值附加到 x
:
xs
答案 3 :(得分:0)
您必须存储唯一接收到的值。稍后您可以检查新收到的值是否已经存在,然后不要打印此值,否则将其打印到控制台。
def parse():
stored_data = []
while True:
x = driver.find_element_by_xpath('//*[@id="bets-history"]/li[0]').text
if x not in stored_data:
print(x)
stored_data.append(x)
答案 4 :(得分:0)
使用 set
代替 list
以加快查找速度。
由于您的问题中只有两个值,因此在 list
和 set
中查找不会有太大区别。但如果有 n
个值,
list
将花费 O(n) 时间来查找
set
只需要 O(1) 的时间来查找
def parse():
s = set()
while True:
x = driver.find_element_by_xpath('//*[@id="bets-history"]/li[0]').text
if x not in s:
s.add(x)
print(x)