You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python Requests-HTML检测含HTTP的链接并打印URL?

分析你的实现与优化建议

你的代码方向是对的,但有几个细节问题需要调整,才能精准实现「检测链接是否包含HTTP并打印URL」的需求:

现存问题点

  • l.links返回的是集合对象:你打印出来的{'http://streamcloud.eu/...'}是Python集合的格式,而不是纯URL字符串——这是因为links属性会返回该元素及其子元素中所有的链接集合,哪怕单个<a>标签只会包含自身的href,格式依然是集合。
  • 错误的非空判断逻辑:if link != "set()"这个判断完全不成立,因为link是集合对象,永远不可能等于字符串"set()",正确的判断应该是检查集合是否非空,比如if link。
  • 获取链接的方式不够直接:针对单个<a>标签,直接提取它的href属性是更高效准确的方式,不需要绕路用links。

修正后的代码

import requests
from requests_html import HTMLSession

link = "http://www.tvil.me/view/93/4/8/v/%D7%90%D7%99%D7%99_%D7%96%D7%95%D7%9E%D7%91%D7%99_IZombie.html"
enter_episodes = HTMLSession().get(link)
page = enter_episodes.html
# 获取所有目标a标签
s = page.xpath("//*[@class='view-watch-button']/a")

for l in s:
    # 安全提取a标签的href属性(避免标签无href时报错)
    href = l.attrs.get('href')
    # 检测是否包含HTTP(兼容http/https)
    if href and 'http' in href.lower():
        print(href)

代码说明

  • l.attrs.get('href'):用get方法避免标签没有href属性时抛出KeyError,更健壮;
  • 'http' in href.lower():同时匹配http和https开头的链接,不会遗漏HTTPS类型的链接;
  • 移除了未使用的import sys,精简代码结构。

修改后,你会直接得到纯URL字符串的输出,同时精准筛选出包含HTTP协议的链接,完全符合你的需求。

内容的提问来源于stack exchange,提问作者kaki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:54:24