Python 检测一个网址是不是为404不存在(网页不存在)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 检测一个网址是不是为404不存在(网页不存在)相关的知识,希望对你有一定的参考价值。
Python 检测一个网址是否404不存在,
例如: http://www.baidu.com/xx/ad/aa.asp
你可以用Python获取网页的状态码,拿到状态码后面怎么处理还不就由你了,见下面截图。
第一种是用urllib模块:
import urllib
status=urllib.urlopen("http://www.baidu.com").code
print status
第二种是用requests模块:
import requests
code=requests.get("http://www.baidu.com").status_code
print code
本回答被提问者采纳 参考技术B 看返回的status code是不是等于404.
Selenium Webdriver Python - 检查元素是不是可见/检测到/存在[重复]
【中文标题】Selenium Webdriver Python - 检查元素是不是可见/检测到/存在[重复]【英文标题】:Selenium Webdriver Python - Check if element is visible/detected/present [duplicate]Selenium Webdriver Python - 检查元素是否可见/检测到/存在[重复] 【发布时间】:2021-03-19 09:58:53 【问题描述】:我想检查 Selenium Web 驱动程序对于以下 XPath 是否可见/存在/检测到元素:
//*[@data-animate-modal-popup="true"]
是否有任何 Selenium 的函数在该元素可见/存在/检测到时返回 TRUE 或 FALSE?
上次我使用以下 IF - Else
phone_number_invalid = driver.find_element_by_xpath('//*[@data-animate-modal-popup="true"]')
if phone_number_invalid:
code here .....
find_element_by_xpath
在找不到元素时总是抛出错误。我只想在元素可见/存在/检测到时获得 TRUE 或 FALSE。
谢谢。
【问题讨论】:
【参考方案1】:没有原生元素来检查是否存在您可以使用的元素:
创建一个函数:
public boolean isElementPresent(By by)
try
driver.findElement(by);
return true;
catch(NoSuchElementException e)
return false;
现在在你的 if 案例中调用它:
if(isElementPresent(By.xpath("//div[contains(text(),'Report name already exists. Please enter another name.')]")))
//code
else if(isElementPresent(By.xpath("//div//span[contains(text(),'Grid Report saved successfully.')]")))
//code
第二个选项:
List<WebElement> element1 = driver.findElement(By.xpath("//div[contains(text(),'Report name already exists. Please enter another name.')]"));
List<WebElement> element2 = driver.findElement(By.xpath("//div//span[contains(text(),'Grid Report saved successfully.')]"));
if(element1.isEmpty() )
//first set of code
else if(element2.isEmpty())
//second set of code
第二个选项处理更多,因此更推荐第一个选项
【讨论】:
【参考方案2】: 为方便起见,您为什么不使用扩展程序。 带镀铬: 使用“Xpath helper”检查元素:使用“Xpath finder”查找元素:https://chrome.google.com/webstore/detail/xpath-helper/hgimnogjllphhhkhlmebbmlgjoejdpjl?hl=en
https://chrome.google.com/webstore/detail/xpath-finder/ihnknokegkbpmofmafnkoadfjkhlogph?hl=en
【讨论】:
【参考方案3】:对于您的问题,您是否已经找到了该元素,或者您需要在某些操作后检查该元素是否可见?
-
如果您已经拥有该元素
使用元素中的方法is_displayed
。
例如:
# you have located element and assign it to elem
visibility = elem.is_displayed()
print(visibility) # will print True or False
-
如果您需要检查元素在某些操作后是否可见
使用fluent wait,并用try except包裹它。
from selenium.common.exceptions import TimeoutException
def check_visible_by_xpath(xpath, timeout=2):
# Will actively search for the element in 2 seconds.
# If found, return True and stop waiting.
# If 2 seconds threshold reaches, return False (cannot find it visible in 2 seconds)
try:
element = WebDriverWait(driver, timeout).until(
EC.visibility_of_element_located((By.XPATH, xpath)))
return True
except TimeoutException:
return False
# ...
# Some actions here
type_in_phone_number()
# Now you want to check, if after your previous action, something pops up??
visibility = check_visible_by_xpath('//*[@data-animate-modal-popup="true"]', 2)
# check and do something about it
if visibility:
action_if_visible()
else:
action_if_not_visible()
【讨论】:
以上是关于Python 检测一个网址是不是为404不存在(网页不存在)的主要内容,如果未能解决你的问题,请参考以下文章
如何使用python删除功能从具有404状态代码的文件中删除网址?