写一个PYthon 能检查整站死链的完整代码
以下是一个Python脚本,可以检查整个网站的死链:
import requests
from bs4 import BeautifulSoup
from urllib.parse import urlparse, urljoin
# 设置要检查的网站
url = "https://example.com"
# 保存检查过的链接
checked_links = set()
# 保存检查过的页面
checked_pages = set()
# 检查链接是否为有效的URL
def is_valid_url(url):
try:
result = urlparse(url)
return all([result.scheme, result.netloc])
except ValueError:
return False
# 获取页面的所有链接
def get_links(url):
try:
response = requests.get(url)
soup = BeautifulSoup(response.content, "html.parser")
links = set()
for link in soup.find_all("a"):
href = link.attrs.get("href")
if href and is_valid_url(href):
links.add(href)
return links
except Exception:
return set()
# 检查链接是否为死链
def is_dead_link(url):
try:
response = requests.head(url, allow_redirects=True)
return response.status_code >= 400
except Exception:
return True
# 检查所有页面的链接
def check_links(url):
# 如果已经检查过该页面,跳过
if url in checked_pages:
return
checked_pages.add(url)
# 获取页面的所有链接
links = get_links(url)
# 检查每个链接是否为死链
for link in links:
if link not in checked_links:
checked_links.add(link)
if is_dead_link(link):
print("Dead link: ", link)
else:
check_links(link)
# 开始检查
check_links(url)
使用该脚本需要安装 requests 和 beautifulsoup4 模块。可以使用以下命令进行安装:
pip install requests beautifulsoup4
该脚本会输出所有死链的链接。注意,该脚本可能会检查网站的所有页面,因此可能需要一些时间才能完成
原文地址: https://www.cveoy.top/t/topic/hvEI 著作权归作者所有。请勿转载和采集!