如何修复requests.exceptions.InvalidSchema错误并提取诊所URL?
问题修复方案
错误原因
requests.exceptions.InvalidSchema: 未找到连接适配器 是因为clinics.absolute_links里混了非HTTP/HTTPS协议的链接(比如电话、邮件类链接),用s.get(item)请求这类链接时,requests无法识别对应的连接方式,所以报错。
修复后的代码
from requests_html import HTMLSession url = "https://www.dent.cz/zubni-lekari" s = HTMLSession() r = s.get(url) r.html.render(sleep=1) # 定位诊所列表的父容器,改用基于class的定位更稳定 clinics_container = r.html.xpath('//div[contains(@class, "list-items")]', first=True) # 筛选并打印有效的诊所详情页URL for link in clinics_container.absolute_links: # 只保留以诊所详情页前缀开头的链接,排除无效链接 if link.startswith("https://www.dent.cz/zubni-lekari/"): print(link)
关键修复点
- 替换了原代码中依赖精确DOM层级的XPath,改用基于class的定位方式,避免页面结构变动导致定位失败
- 增加了链接筛选逻辑,只保留
https://www.dent.cz/zubni-lekari/开头的诊所详情页URL,排除电话、邮件等非网页链接,解决了连接适配器错误 - 移除了不必要的详情页请求逻辑,直接输出目标URL,符合需求
内容的提问来源于stack exchange,提问作者Filip Chobodicky
相关产品推荐
相关产品推荐

