python - 如何从使用 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。
解决方案
简短的回答是你需要一个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))
推荐阅读
- json - 将 JSON 节点转换为要选择的列
- c# - 有没有办法检查数据库中是否存在文本文件中的数据?
- javascript - 参数在 RN typescript 中隐式具有任何类型
- ruby - 如何清理 Ruby 脚本中的原始 SQL
- java - 如何在tomcat中标记JSESSIONID安全?
- laravel - Laravel 5.8 在后台运行 PHP Artisan 命令,同时单击 Blade View 中的按钮
- node.js - 如果我事先不知道我可能从客户端收到多少个查询字符串,如何通过多个查询参数过滤结果?
- javascript - Javascript/JQuery 错误消息没有隐藏在 Safari 中
- android - 如何使用多行下拉项目布局制作 Material ExposedDropdownMenu?
- c++ - 函子与比较器