首页 > 解决方案 > 如何从使用 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')

我希望我能够解释我想打印列表中不包含“未知”的 .texts。

标签: pythonpython-3.xseleniumgoogle-search

解决方案


简短的回答是你需要一个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))

推荐阅读