在使用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我换行符。
答案 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'
>>>