如何让我的机器人跳过不存在的网址

时间:2021-04-04 23:00:24

标签: python discord discord.py

嘿伙计们,我想知道是否有办法让我的机器人在 1 次尝试继续 for 循环后跳过无效网址,但 continue 似乎不起作用

def check_valid(stripped_results):
  global vstripped_results
  vstripped_results = []
  for tag in stripped_results:
    conn = requests.head("https://" + tag)
    conn2 = requests.head("http://" + tag)
    status_code = conn.status_code
    website_is_up = status_code == 200
    if website_is_up:
      vstripped_results.append(tag)
    else:
      continue

剥离的结果是一组未知数量的域和子域,这就是为什么我有“https://”部分和 tbh 我什至不确定我的 if 语句是否有效。 任何帮助将不胜感激我不想再通过发送这么多无效域而受到不和谐的限制。 :(

2 个答案:

答案 0 :(得分:1)

这很容易。为了检查 URL 的有效性,存在一个 Python 库,即 Validators。该库可用于验证任何 URL 是否存在。让我们一步一步来。

首先, 这是验证器的文档链接: https://validators.readthedocs.io/en/latest/


如何使用 validators 验证链接?

很简单。让我们在命令行上工作一会儿。

这张图片显示了它。该模块给出是否为有效链接的布尔结果。

Command Line for Validators

这里对于这个问题的链接,它给出了 True,当它为假时,它会给你错误。

您可以使用以下语法对其进行验证:

validators.url('Add your URL variable here')

请记住,这给出了布尔值,因此以这种方式对其进行编码。

所以你可以这样使用它...


我不会在您的代码中实现它,因为我希望您自己尝试一次。如果你做不到,我会帮你解决这个问题。

谢谢! :)

答案 1 :(得分:0)

试试这个?

def check_valid(stripped_results):
global vstripped_results
vstripped_results = []
for tag in stripped_results:
  conn = requests.head("https://" + tag)
  conn2 = requests.head("http://" + tag)
  status_code = conn.status_code
  website_is_up = status_code == 200
  if website_is_up:
    vstripped_results.append(tag)
  else:
    #Do the thing here