用Python Selenium Webdriver刮取条件结果

用Python Selenium Webdriver刮取条件结果,python,selenium,selenium-webdriver,web-scraping,Python,Selenium,Selenium Webdriver,Web Scraping,这是一个后续行动,从我有。基本上,我正试图从这个网站的搜索结果中删除所有CRD 当你点击链接时,你需要重新进行搜索,只需为个人搜索输入一些随机的内容 我试图从公开内容中获取是或否,但此框使用ng if来显示是或否,或者对于某些行,它甚至不会显示它 我使用CSS_选择器选择该div的文本。但是,ng if的内容不同 # No print([disclosure.get_attribute("innerHTML") for disclosure in WebDriverWait(driver, 10

这是一个后续行动,从我有。基本上,我正试图从这个网站的搜索结果中删除所有CRD

当你点击链接时,你需要重新进行搜索,只需为个人搜索输入一些随机的内容

我试图从公开内容中获取是或否,但此框使用ng if来显示是或否,或者对于某些行,它甚至不会显示它

我使用CSS_选择器选择该div的文本。但是,ng if的内容不同

# No
print([disclosure.get_attribute("innerHTML") for disclosure in WebDriverWait(driver, 10).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "div.ng-scope[ng-if='!vm.item.hasDisclosures() && vm.item.hasDisclosureFlag()'")))])

# Yes
print([disclosure.get_attribute("innerHTML") for disclosure in WebDriverWait(driver, 10).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "div.ng-scope[ng-if='vm.item.hasDisclosures()'")))])
如何以编程方式处理此情况


谢谢。

在这种情况下,您需要的是依赖于文本的Xpath

首先你想得到披露部门,然后是它旁边的部门

//div[@class='flipper']//md-card-content/div/div//*[contains(., "Disclosures")]
然后去接下一个节目

//div[@class='flipper']//md-card-content/div/div//*[contains(., "Disclosures")]/following-sibling::div[1]/div
然后你就可以得到div了。所以基本上,当你在每一张flipper卡上循环时,你应该运行一些find元素,如//md card content/div/div/*[contains.,dispositions]
/以下同级::div[1]/div以查找卡中的披露值。如果元素不在那里,这意味着没有指定任何披露

在这种情况下,您需要的是依赖于文本的Xpath

首先你想得到披露部门,然后是它旁边的部门

//div[@class='flipper']//md-card-content/div/div//*[contains(., "Disclosures")]
然后去接下一个节目

//div[@class='flipper']//md-card-content/div/div//*[contains(., "Disclosures")]/following-sibling::div[1]/div
然后你就可以得到div了。所以基本上,当你在每一张flipper卡上循环时,你应该运行一些find元素,如//md card content/div/div/*[contains.,dispositions] /以下同级::div[1]/div以查找卡中的披露值。如果元素不存在,则意味着未指定任何披露来打印所有披露值,即从网站内的搜索结果中使用“是”或“否”,您必须诱导WebDriverWait了解所有元素的可见性,您可以使用以下任一项:

使用CSS_选择器和HasDispositions:

使用CSS_选择器和hasDisclosureFlag:

使用CSS_选择器、hasDisclosures和hasDisclosureFlag:

注意:您必须添加以下导入:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
要使用打印网站内搜索结果中的所有披露值,即是或否,您必须诱导WebDriverWait了解所有元素的可见性,您可以使用以下任一方法:

使用CSS_选择器和HasDispositions:

使用CSS_选择器和hasDisclosureFlag:

使用CSS_选择器、hasDisclosures和hasDisclosureFlag:

注意:您必须添加以下导入:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC