[英]Is there a way to skip an element if it does not exist on a web page with Selenium Python?
但是,我正在抓取许多类似的网页; 获取相同信息的信息位于某些页面的不同 XPATH 之下。
这是我尝试替换的两个 XPATH。
city_e = WebDriverWait(driver, 20).until(
EC.presence_of_element_located((By.XPATH, "//div/h4"))
)
alternative_name_e = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.XPATH, "//*[@id='SFbizctc53fcd34ec260b1442c7bd7b4']/div/div[1]"))
)
完整代码如下:
results = []
for i in range(6):
links = WebDriverWait(driver, 60).until(
EC.presence_of_all_elements_located((By.CSS_SELECTOR, ".SFpne a"))
)
links[i].click()
time.sleep(4)
name_e = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.XPATH, "//div/h3"))
)
alternative_name_e = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.XPATH, "//*[@id='SFbizctc53fcd34ec260b1442c7bd7b4']/div/div[1]"))
)
city_e = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.XPATH, "//div/h4"))
)
jobTitle_e = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.XPATH, "//div[@itemprop='contactPoint']/div"))
)
address_e = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.XPATH, "//div[@itemprop='contactPoint']/address"))
)
cell_e = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.XPATH, "//div/a[@class='SFbizctcphn']"))
)
email_e = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.XPATH, "//*[@id='SFbizpne0']/div[3]/div/a"))
)
full_member_content = {
'Member_Name': [alternative_name_e.text],
'member_Name': [name_e.text],
'member_City': [city_e.text],
'member_JobTitle': [jobTitle_e.text],
'member_Address': [address_e.text],
'member_Cell': [cell_e.text],
'member_Email': [email_e.text]
}
results.append(full_member_content)
time.sleep(4)
driver.back()
print(results)
如果有一个我可以添加的 if 语句的 try catch 来完成这个,那就只是好奇。
第二个挑战:如果这是一个简单的解决方案,我也很好奇我是否可以重新运行city_e= WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//div/h4")))
当出现多个h4
标签时。
谢谢!
您不能寻找不存在的 object。 对于您正在查看的第一个问题:
强行入睡。
time.sleep(4)
然后做一些类似于你对链接所做的事情
exists =EC.presence_of_all_elements_located((your selector))
在做任何事情之前检查存在的长度。 如果它大于 0,它就在那里,否则它是另一个。
对于您的奖励问题,对位于 h4 标签和 go 的所有元素执行相同的操作,就像您现在使用链接一样
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.