如何从使用 selenium 从网站上提取的文本中删除包含我们想要的单词的元素?

How do I remove the element with the word we want from the text I pulled from a website using selenium?

我使用 Selenium find_element(By.XPATH) 模块从网站上抓取了 6 个元素,并将这些元素添加到列表中。

我将这些元素转换为 .text 并在 google 上搜索,但由于元素在变化,有时可能会写“UNKNOWN”而不是元素,它会打印“UNKNOWN”。

当元素为“UNKNOWN”时,我不想让它列出来,或者如果有删除之类的方法,我也可以使用。

birText = driver.find_element(By.XPATH,"//*[@id='collapse3']/div/div/div/div/div/div[2]/div/div/div[1]/div[1]/div/div/div/h3/strong")

ikiText = driver.find_element(By.XPATH,"//*[@id='collapse3']/div/div/div/div/div/div[2]/div/div/div[2]/div[1]/div/div/div/h3/strong")

ucText = driver.find_element(By.XPATH,"//*[@id='collapse3']/div/div/div/div/div/div[2]/div/div/div[3]/div[1]/div/div/div/h3/strong")


my_list = [birText.text,ikiText.text,ucText.text]
my_list = list(dict.fromkeys(my_list))
results = []

for query in my_list:
    results.append(search(query, tld="com", num=10, stop=10, pause=2))
for result in results: print(*list(result),sep='\n')

希望我能解释清楚 我想打印列表中不包含“UNKNOWN”的 .texts。

简短的回答是您需要一个 if 语句来决定是否在您的数组中包含一个项目。

我还会添加一个 for 循环来删除一些重复:

def get_data(driver):
    for i in range(3):
        selector = f'//*[@id='collapse3']/div/div/div/div/div/div[2]/div/div/div[{i+1}]/div[1]/div/div/div/h3/strong'
        element = driver.find_element(By.XPATH, selector)
        if element.text != 'UNKNOWN':
            yield element.text

有了这个功能,你现在可以做

my_list = list(get_data(driver))