检查一个网站是否存在python3

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (158)

对不起,如果这是重复我一直在寻找大约一个小时的答案,似乎找不到任何答案。无论如何,我有一个充满网址的文本文件,我想检查每个文件以查看它是否存在。我需要一些帮助来理解错误消息,如果有任何方法来解决它或我可以使用的不同方法。

这是我的代码

import requests

filepath = 'url.txt'  
with open(filepath) as fp:  
   url = fp.readline()
   count = 1
   while count != 677: #Runs through each line of my txt file
      print(url)
      request = requests.get(url) #Here is where im getting the error
      if request.status_code == 200:
          print('Web site exists')
      else:
        print('Web site does not exist')
      url = url.strip()
      count += 1 

这是输出

http://www.pastaia.co

Traceback (most recent call last):
File "python", line 9, in <module>
requests.exceptions.ConnectionError: 
HTTPConnectionPool(host='www.pastaia.co%0a', port=80): Max retries exceeded 
with url: / (Caused by NewConnectionError('<urllib3.connection.HTTPConnection 
object at 0x7fca82769e10>: Failed to establish a new connection: [Errno -2] 
Name or service not known',))
提问于
用户回答回答于

该网站似乎没有提供网络流量:http//www.pastaia.co

最有可能的是,请求模块的get()功能是尝试多次连接到URL。它最终会达到自己的内部重试限制,此时会抛出ConnectionError异常。

我会将此行包装在try-catch块中,以捕获错误(从而表示该网站不存在:

try:
    request = requests.get(url)
    if request.status_code == 200:
        print('Web site exists')
    else:
        print("Website returned response code: {code}".format(code=request.status_code))
except ConnectionError:
    print('Web site does not exist')
    continue;
用户回答回答于

我会提出想法让你开始,整个职业生涯围绕着蜘蛛侠:)顺便说一句,http://www.pastaia.co似乎只是失败了。这是技巧的一个重要部分,如何在抓取网页时处理意外情况。准备?开始了...

import requests

filepath = 'url.txt'
with open(filepath) as fp:
    for url in fp:
        print(url)
        try:
            request = requests.get(url) #Here is where im getting the error
            if request.status_code == 200:
                print('Web site exists')
        except:
            print('Web site does not exist')
  • 把它变成一个for循环,你只想把整个文件循环好吗?
  • 做一个tryexcept这种方式,如果它炸毁无论出于何种原因,其中可能有很多喜欢,不好DNS,不200回来了,也许这是一个.pdf网页,网页是狂野西部。这样代码就不会崩溃,您可以检查列表中的下一个站点,只记录您想要的错误。
  • 你也可以添加其他类型的条件,也许页面需要一定的长度?并且只是因为它response code 200并不总是意味着页面有效,只是该网站返回success,但它是一个很好的起点。
  • 考虑user-agent在您的请求中添加一个,您可能想要模仿浏览器,或者让您的程序将自己标识为super bot 9000
  • 如果你想进一步深入研究和解析文本,请查看使用beautifulsouphttps//www.crummy.com/software/BeautifulSoup/

所属标签

可能回答问题的人

  • HKC

    红客学院 · 创始人 (已认证)

    26 粉丝7 提问5 回答
  • 西风

    renzha.net · 站长 (已认证)

    9 粉丝1 提问3 回答
  • 螃蟹居

    1 粉丝0 提问2 回答
  • 富有想象力的人

    2 粉丝0 提问1 回答

扫码关注云+社区

领取腾讯云代金券