检查列表是否包含特定的字符串,问题

时间:2019-01-04 15:13:31

标签: python selenium

在使用Selenium Python程序时,我试图跳过列入黑名单的项目,但是我不知道如何使此代码段起作用-

    channel = driver.find_element_by_xpath('/html/body/ytd-app/div[1]/ytd-page-manager/ytd-watch-flexy/div[3]/div[1]/div/div[7]/div[3]/ytd-video-secondary-info-renderer/div/div[2]/ytd-video-owner-renderer/a').get_attribute('aria-label')

    print(channel)   
    print(blacklistchannels[3])

    if channel in blacklistchannels:
        print('Blacklisted Channel, Skipping...')
        continue
    else:
        print('There is still a problem')

即使在打印时,频道名称和列入黑名单的项目(3)也完全相同。它仍然跟随else,并打印出“仍然有问题”

任何帮助将不胜感激,谢谢!

编辑-继续与该代码段无关,只是为了继续该循环。

解决方案-.Stripping()黑名单和频道名称,以消除空格和/ n我换行符。

3 个答案:

答案 0 :(得分:1)

很难猜测else()块被执行的原因。也许相关的 HTML 可以帮助我们诊断问题。

但是我怀疑get_attribute('aria-label')提取的包含空白空间 / 空白空间

解决方案

您可以使用 python strip()方法删除空白 / 空白,如下所示:

channel = driver.find_element_by_xpath('/html/body/ytd-app/div[1]/ytd-page-manager/ytd-watch-flexy/div[3]/div[1]/div/div[7]/div[3]/ytd-video-secondary-info-renderer/div/div[2]/ytd-video-owner-renderer/a').get_attribute('aria-label').strip(' \n')
print(channel)   
print(blacklistchannels[3])
if channel in blacklistchannels:
    print('Blacklisted Channel, Skipping...')
else:
    print('There is still a problem')

答案 1 :(得分:0)

为什么不只使用这个?

channel = driver.find_element_by_xpath('/html/body/ytd-app/div[1]/ytd-page-manager/ytd-watch-flexy/div[3]/div[1]/div/div[7]/div[3]/ytd-video-secondary-info-renderer/div/div[2]/ytd-video-owner-renderer/a').get_attribute('aria-label')

print(channel)   
print(blacklistchannels[3])

if channel in blacklistchannels:
    print('Blacklisted Channel, Skipping...')
    # continue
else:
    print('There is still a problem')

我不确定为什么在if语句中继续使用

答案 2 :(得分:0)

关于如何捕获这样的问题,请注意:

>>> a = "hello\r\n"
>>> print(a)
hello

>>> 

您可以说,使用普通的打印语句可以很容易地忽略“ \ r \ n”。

这是repr()有用的地方:

>>> a = "hello\r\n"
>>> print(repr(a))
'hello\r\n'
>>>