如何用Python查找链接至我方网站的外部域名链接
解决方案
你的原代码逻辑有误——它是爬取我方网站页面里的外部链接,而你需要的是找出外部网站页面中包含指向我方网站(https://www.9skips.com/)的链接。正确的思路是遍历目标外部网站,检查它们的页面内容里是否存在指向我方的链接。
实现步骤
- 准备需要检测的外部网站URL列表(可通过搜索引擎搜索
link:https://www.9skips.com/获取初步候选站点) - 逐个请求这些外部网站的页面,解析HTML内容
- 查找页面中所有
href属性包含我方网站URL的<a>标签 - 记录符合条件的外部网站URL
代码实现
import requests from bs4 import BeautifulSoup import time # 我方网站URL OUR_SITE = "https://www.9skips.com/" # 待检测的外部网站列表(示例,可替换为实际收集的站点) EXTERNAL_SITES = [ "https://example.com", "https://test-site.org", # 添加更多需要检测的站点 ] # 请求头,模拟浏览器访问,避免被反爬 HEADERS = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36" } def check_external_site(site_url): try: # 发送请求,设置超时 response = requests.get(site_url, headers=HEADERS, timeout=10) response.raise_for_status() # 抛出HTTP错误 soup = BeautifulSoup(response.text, "html.parser") # 查找所有包含我方网站URL的a标签 links_to_our_site = soup.find_all("a", href=True, href=lambda x: OUR_SITE in x) if links_to_our_site: print(f"找到包含指向我方网站链接的外部站点: {site_url}") # 可选:打印具体的链接 for link in links_to_our_site: print(f" 具体链接: {link['href']}") return site_url return None except Exception as e: print(f"检测站点 {site_url} 时出错: {str(e)}") return None if __name__ == "__main__": valid_sites = [] for site in EXTERNAL_SITES: valid_site = check_external_site(site) if valid_site: valid_sites.append(valid_site) # 添加延时,避免频繁请求触发反爬 time.sleep(2) print("\n所有包含指向我方网站链接的外部站点:") for site in valid_sites: print(f"- {site}")
补充说明
- 反爬处理:添加
User-Agent模拟浏览器,请求后添加延时,避免被目标网站封禁IP - 错误处理:捕获请求超时、HTTP错误等异常,保证脚本稳定运行
- 扩展优化:如果需要批量检测大量站点,可以结合多线程/异步请求提高效率;也可以通过搜索引擎API自动获取包含我方网站链接的站点列表,无需手动收集
内容的提问来源于stack exchange,提问作者khushi sharma
相关产品推荐
相关产品推荐

