猿问

http.client.InvalidURL: nonnumeric port:

我一直在尝试制作一个脚本来检查是否存在随机网站,如果它确实存在,则打开它,但我不断收到一堆不同的错误。这是我的代码:


import webbrowser

import time

import random

import http.client

from random_word import RandomWords

r=RandomWords()

while True:

    possible_things = random.choice([".com",".net"])

    WEB = "http://"+r.get_random_word()+possible_things

    c = http.client.HTTPConnection(WEB)

    if c.getresponse().status == 200:

        seconds = random.randint(5,20)

        print("Web site exists; Website: "+WEB+" ; Seconds: "+seconds)

        time.sleep(seconds)

        webbrowser.open(WEB)

        print("Finished countdown, re-looping...")

    else:

        print('Web site DOES NOT exists; Website: '+WEB+'; re-looping...')

这是错误:


Traceback (most recent call last):

  File "C:\Users\[REDACTED]\AppData\Local\Programs\Python\Python37-32\lib\http\client.py", line 877, in _get_hostport

    port = int(host[i+1:])

ValueError: invalid literal for int() with base 10: '//water-lined.net'


During handling of the above exception, another exception occurred:


Traceback (most recent call last):

  File "Troll.py", line 10, in <module>

    c = http.client.HTTPConnection(WEB)

  File "C:\Users\[REDACTED]\AppData\Local\Programs\Python\Python37-32\lib\http\client.py", line 841, in __init__

    (self.host, self.port) = self._get_hostport(host, port)

  File "C:\Users\[REDACTED]\AppData\Local\Programs\Python\Python37-32\lib\http\client.py", line 882, in _get_hostport

    raise InvalidURL("nonnumeric port: '%s'" % host[i+1:])

http.client.InvalidURL: nonnumeric port: '//water-lined.net'


杨魅力
浏览 552回答 2
2回答

慕码人8056858

我只是设置了很长的延迟并添加了很多尝试,但是非常感谢@B łotosmętek!

郎朗坤

WEB = "http://"+r.get_random_word()+possible_thingsc = http.client.HTTPConnection(WEB)在第一行中,您创建一个 URL,从 http:// 在第二行中,您将它传递给一个函数,该函数不需要 URL,而是一个具有可选和端口号的主机名。由于您的字符串在“http”之后包含冒号,因此“http”将被假定为主机名,冒号之后的所有内容,即'//something.tld'被解释为端口号 - 但它不能转换为整数,因此错误。:你可能想做的是沿着以下路线:host = r.get_random_word() + possible_thingsWEB = 'http://' + hostc = http.client.HTTPConnection(host)c.request('GET', '/')resp = c.getresponse()if resp.status == 200:等。
随时随地看视频慕课网APP

相关分类

Python
我要回答